文件内容如下:
13 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
12 , D , E , I , 1989 , -9999
16 , D , Z , I , 1989 , -9999
11 , D , N , I , 1989 , -9999
14 , D , Z , I , 1989 , -9999排序成如下顺序(只对第一个逗号前面的数字进行排序):
11 , D , N , I , 1989 , -9999
12 , D , E , I , 1989 , -9999
13 , D , Z , I , 1989 , -9999
14 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
16 , D , Z , I , 1989 , -9999如何实现?请各位高手赐教!谢谢!
13 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
12 , D , E , I , 1989 , -9999
16 , D , Z , I , 1989 , -9999
11 , D , N , I , 1989 , -9999
14 , D , Z , I , 1989 , -9999排序成如下顺序(只对第一个逗号前面的数字进行排序):
11 , D , N , I , 1989 , -9999
12 , D , E , I , 1989 , -9999
13 , D , Z , I , 1989 , -9999
14 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
16 , D , Z , I , 1989 , -9999如何实现?请各位高手赐教!谢谢!
分成"11"和" D , N , I , 1989 , -9999 "然后分别作为键和值放入treeMap,最后在输出的文件
简单想的,应该有更好的方法
1: 13 , D , Z , I , 1989 , -9999 针对这种结构定义一个javabean 有2个属性 id = 13,value = D , Z , I , 1989 , -9999 。然后把文件的内容解析成到javabean 的List ,然后用Arrays的sort方法进行排序,当然comparabe接口自己实现,然后把排序后的list解析成String 急可以了2:13 , D , Z , I , 1989 , -9999 定义一个数据库表,把文件内容更新到数据库的表,然后用sql排序后再取出来就可以个人感觉第一种方法可能会简单点。至少是轻量级的
既然你第一个逗号前的是数字,split后,用数组的第一个转成Integer做Key,再用“11 , D , N , I , 1989 , -9999”这个原字符串substring,从第一个逗号处到结尾,做Value,TreeMap组织好后再迭代的时候,把每个Key与Value,中间用逗号再拼接起来,拼成原样,这时已经是有序的!
文件内容如下:
13 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
16 , D , Z , I , 1989 , -9999
11 , D , N , I , 1989 , -9999
14 , D , Z , I , 1989 , -9999
加到List中,最后先迭代TreeMap,后迭代List!
import java.io.*;
public class Test{
public static void main(String args[]) throws Exception{
sortFile("text1.txt"); }
public static void sortFile(String fileName) throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
List<String> fileContent=new ArrayList<String>();
String line;
//把文件内容读到fileContent这个List中.
while((line=br.readLine())!=null){
fileContent.add(line);
}
br.close();
//对filContent排序.
Collections.sort(fileContent,new Comparator<String>(){
public int compare(String str1,String str2){
int i1=Integer.parseInt(str1.split(",|,")[0].trim());
int i2=Integer.parseInt(str2.split(",|,")[0].trim());
return i1-i2;
}
});
//把fileContent写入文件result.txt中.
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("result.txt"),"UTF-8"));
for(String str: fileContent){
bw.write(str);
bw.newLine();
}
bw.flush();
bw.close();
}
}
text1.txt的内容是:
13 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
16 , D , Z , I , 1989 , -9999
11 , D , N , I , 1989 , -9999
14 , D , Z , I , 1989 , -9999结果文件result.txt的内容如下:
11 , D , N , I , 1989 , -9999
13 , D , Z , I , 1989 , -9999
14 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
16 , D , Z , I , 1989 , -9999
打开这个文件。
13 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
12 , D , E , I , 1989 , -9999
16 , D , Z , I , 1989 , -9999
11 , D , N , I , 1989 , -9999
14 , D , Z , I , 1989 , -99992. 点排序按钮,选择“比较由正则表达式定义的字符串”,输入下面的正则表达式和目标字符串:
正则表达式:^*,
目标字符串:%013. 选择“作为整数比较”,点“按照升序排序”,即可将对对第一个逗号前面的数字进行排序:11 , D , N , I , 1989 , -9999
12 , D , E , I , 1989 , -9999
13 , D , Z , I , 1989 , -9999
14 , D , Z , I , 1989 , -9999
15 , D , Z , I , 1989 , -9999
16 , D , Z , I , 1989 , -9999