不知道這樣的叫法對不對,所以對亂序兩字加了個引號。代碼目的是把文本文件里以行為單位的數據隨機排序后存到另一個文件,速度還可以,所貼上來。測試30萬行處理時間為550ms以內。
import java.io.*;
import java.util.Calendar;
public class SortTxt {
public static void main(String[] args){
Calendar frontDate =Calendar.getInstance();
try{
FileInputStream fis = new FileInputStream("c:/a.txt");
BufferedWriter wr = new BufferedWriter(new FileWriter("c:/b.txt"));
byte[] buf = new byte[fis.available()];
fis.read(buf,0,fis.available());
String str = new String(buf);
fis.close();
String[] array = str.split("\r\n");
StringBuffer sb = new StringBuffer();
sb = randomSortString(array);
wr.write(sb.toString());
wr.flush();
wr.close();
} catch (Exception e) {
e.printStackTrace();
}
Calendar rearDate = Calendar.getInstance();
System.out.println("run time: "+(rearDate.getTimeInMillis() - frontDate.getTimeInMillis())+" ms");
}
public static StringBuffer randomSortString(String[] strs) {
int size = strs.length;
StringBuffer sb = new StringBuffer();
for(int i=0;i<strs.length;i++){
int rd = (int)(Math.random()*size);
sb.append(strs[rd]+"\r\n");
strs[rd] = strs[size-1];
size--;
}
return sb;
}
}