整数に基づいてJavaでマルチタイプの文字列のArrayListをソート

5377037:

私はこのようなデータセットを持っています:

1,JOHN,1934
2,TERENCE,1914
3,JOHN,1964
4,JOHN,1904
5,JOHN,1924
6,JOHN,1954
7,JOHN,1944
8,JOHN,1984
9,JOHN,1974
10,JOHN,1994

これは私がArrayListの中にロードされてきたString[]。このようなテキストファイルから:

ArrayList<String[]> records = new ArrayList<>();
String fileLocation = System.getProperty("user.dir");
String dataPath = fileLocation + File.separator + "boys-names.txt";
try {
    try (BufferedReader br = new BufferedReader(new FileReader(dataPath))) {
        String line;
        while ((line = br.readLine()) != null) {
            String[] values = line.split(",");
            records.add(values);
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}

私は増加してデータセットをソートするために望んでいた年を次のように:

4,JOHN,1904
2,TERENCE,1914
5,JOHN,1924
1,JOHN,1934
7,JOHN,1944
6,JOHN,1954
3,JOHN,1964
9,JOHN,1974
8,JOHN,1984
10,JOHN,1994

問題:内蔵の方法ソートCollections.sort(list);のArrayListのはデータのみの単一のタイプで動作します。しかし、私の場合は私がマルチタイプ(文字列、整数)で文字列を持っているに基づかなければならないソート整数だから、この問題を解決する方法はありますか?

デッドプール :

Javaの-8ラムダ式、書き込みカスタム使用することによりComparator比較しIntegerた値と使用をInteger.valueOf変換するためStringにはInteger

List<String[]> list = new ArrayList<String[]>();

String[] ar1 = {"1","JOHN","1934"};
String[] ar2 = {"2","TERENCE","1914"};

list.add(ar1);
list.add(ar2);

list.sort((c1,c2)->Integer.valueOf(c1[2]).compareTo(Integer.valueOf(c2[2])));

list.forEach(i->System.out.println(Arrays.toString(i)));

出力

[2, TERENCE, 1914]
[1, JOHN, 1934]

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=229545&siteId=1