易截截图软件、单文件、免安装、纯绿色、仅160KB

多路归并排序【JAVA实现】

对远远大于内存的数据进行外排序,在多路比较的时候用败者树效率会更高。
package my.sort;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Random;
/**
* 基于大数据量的外排序算法,分为二路贵宾和多路归并
* @author java2king
* @link http://blog.csdn.net/Java2King
*
*/
public class ExternalSort {
public static int ITEM_COUNT = 10000000; //总数
public static int BUFFER_SIZE = 1024*4*1000;// 一次缓冲读取

public static int FILE_COUNT = 1024*1000*1*4;// 每个文件的记录数1

public static File MAIN_FILE = new File("mainset");//要排序的文件
/**
* 二路归并
* @param file
* @return
* @throws IOException
*/
public File sort(File file) throws IOException {
ArrayList<File> files = split(file);
return process(files);
}
/**
* 多路归并
* @param file
* @throws IOException
*/
public void mSort(File file) throws IOException{
ArrayList<File> files = split(file);
multipleMerge(files);

}
// recursive method to merge the lists until we are left with a
// single merged list
private File process(ArrayList<File> list) throws IOException {
if (list.size() == 1) {
return list.get(0);
}
ArrayList<File> inter = new ArrayList<File>();
for (Iterator<File> itr = list.iterator(); itr.hasNext();) {
File one = itr.next();
if (itr.hasNext()) {
File two = itr.next();
inter.add(merge(one, two)


相关文档:

关于java内存泄漏的经典文章(一)

一 问题的提出
       Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使 有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因 ......

activeMQ启动错误,引出的java endorsed目录问题。

在我机器上安装的是JDK6,下载activeMQ5.3启动时报错,提示jaxb包已经加载2.0版本无法加载2.1版本。
我通过网络搜索了一下发现,jaxb2.0是JDK发布时包含在rt.jar包中的。但是activeMQ5.3却需要2.1版本。这该如何处理?
总不能将rt.jar包解开,将jaxb2.1的类覆盖进去,再重新打包吧。这样太麻烦了。
再次进行网络搜索,发 ......

java数据库开发中两种注册oracle驱动的方式

一、利用Class.forName函数(用java开发B/S模式的程序) 1.代码如下: //注册驱动程序
public boolean connectDb() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
return true;
} catch (ClassNotFoundException e) {
System.out.println(e);
return false;
}
} ......

强转JAVA数组

强转一个数组类型 必须要循环遍历
比如
 B[] b;
 //A继承B;
A[] a= (A[])b;
这样转是不能成功的
这是为什么?如何解决?
也就是说
for( int i=0;  i<b.length;  i++ )
{
    a[i]=(A)b[i];
}
这样转! ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号