6

私はEclipseを使用しており、次のような約40行のテキストファイルをソートしようとしています:

1,Terminator,1984,Schwarzenegger
2,Avatar,2009,Worthington
3,Avengers,2012,Downey
4,Starwars,1977,Hammill
5,Alien,1979,Weaver

テキスト ファイルが次のように変更されるように、2 番目のフィールドでアルファベット順に並べ替えます。

5,Alien,1979,Weaver
2,Avatar,2009,Worthington
3,Avengers,2012,Downey
4,Starwars,1977,Hammill
1,Terminator,1984,Schwarzenegger

それらをトークン化すること(表示するためにすでに行っています)とBufferedWriterを含む何かを行う必要があることはかなり確信していますが、私の人生では、2番目または3番目のフィールドでそれを行う方法を考えることができません明らかな何かが欠けているように感じます。

4

7 に答える 7

4

あなたのコンパレータ

class SampleComparator implements Comparator<String> {
    @Override
    public int compare(String o1, String o2) {
           String array1[] = o1.split(",");
           String array2[] = o2.split(",");
           return array1[1].compareTo(array2[1]);
   }
}

あなたの並べ替え

String [] lines= {"1,Terminator,1984,Schwarzenegger",
                       "2,Avatar,2009,Worthington",
                       "3,Avengers,2012,Downey",
                       "4,Starwars,1977,Hammill",
                       "5,Alien,1979,Weaver"};
List<String> rowList = new ArrayList<String>(Arrays.asList(lines));
Collections.sort(rowList, new SampleComparator());
for (String string : rowList) {
     System.out.println(string);
}   

あなたのアウトプット

5,Alien,1979,Weaver
2,Avatar,2009,Worthington
3,Avengers,2012,Downey
4,Starwars,1977,Hammill
1,Terminator,1984,Schwarzenegger

これについて疑問がある場合は、私に知らせてください..

于 2013-10-21T13:45:59.950 に答える