如何按第二个单词对列表进行排序?

时间:2018-08-31 11:45:37

标签: java sorting arraylist collections

我有一个像这样的数据集合:

@highest_count_words_across_lines = @analyzers.select do |analyzer|
   analyzer.highest_wf_count == @highest_count_across_lines
end

我将每个单词分割,将其添加到数组中并得到:

John eats candy
Richard runs around in the morning
Hannah drinks water

输出应为(第二个单词按字母顺序排序)

[John, eats, candy]
[Richard, runs, around, in, the, morning]
[Hannah, drinks, water]

这是我的代码:

[Hannah, drinks, water]
[John, eats, candy]
[Richard, runs, around, in, the, morning]

但是我不知道下一步该怎么做。如何进行元素比较,并以此为基础替换行。 将字符串分成数组以访问第二个元素完全正确吗? 即使您只提供一些建议,我也会很高兴。

1 个答案:

答案 0 :(得分:5)

第一次尝试时,您可以写一个Comparator

class ListComparator implements Comparator<List<String>> {
    @Override
    public int compare(List<String> o1, List<String> o2) {
        return o1.get(1).compareTo(o2.get(1));
    }
}

mainList.sort(new ListComparator());

在Java-8中,可以简化为:

mainList.sort(Comparator.comparing(strings -> strings.get(1))); // compare using the second element(index 1) of every list