文件内容如下:
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如何实现?请各位高手赐教!谢谢!

解决方案 »

  1.   

    从文件中读出来,放到列表中,用for循环对列表中的数据进行排序.再重新保存到文件中去.
      

  2.   

    文件每行读取然后split两部分,比如11 , D , N , I , 1989 , -9999 
    分成"11"和" D , N , I , 1989 , -9999 "然后分别作为键和值放入treeMap,最后在输出的文件
    简单想的,应该有更好的方法
      

  3.   

    做一String 数组每一行是个String,用-号连接 如:13-D-Z-I-1989--9999对数组排序 
      

  4.   

    直接排肯定是做不了的,有2个方法,可以参考一下:
    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排序后再取出来就可以个人感觉第一种方法可能会简单点。至少是轻量级的
      

  5.   

    同意这种做法,TreeMap自动排序,再迭代出来!再详细点:
    既然你第一个逗号前的是数字,split后,用数组的第一个转成Integer做Key,再用“11 , D , N , I , 1989 , -9999”这个原字符串substring,从第一个逗号处到结尾,做Value,TreeMap组织好后再迭代的时候,把每个Key与Value,中间用逗号再拼接起来,拼成原样,这时已经是有序的!
      

  6.   

    如果原始文件中有重复如何排序?Map好像不允许key值重复
    文件内容如下: 
    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 
      

  7.   

    TreeMap<Integer,List<String>> 定义成这样!
    加到List中,最后先迭代TreeMap,后迭代List!
      

  8.   

    import java.util.*;
    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
      

  9.   

    1. 下载PilotEdit 2.8, http://topic.csdn.net/u/20090818/22/df665ee5-bd6f-4c6d-84b6-9831217e4e02.html
    打开这个文件。
    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
    2. 点排序按钮,选择“比较由正则表达式定义的字符串”,输入下面的正则表达式和目标字符串:
    正则表达式:^*,
    目标字符串:%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