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

1 java sorting collections arraylist

我有一个包含以下数据的集合:

John eats candy
Richard runs around in the morning
Hannah drinks water
Run Code Online (Sandbox Code Playgroud)

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

[John, eats, candy]
[Richard, runs, around, in, the, morning]
[Hannah, drinks, water]
Run Code Online (Sandbox Code Playgroud)

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

[Hannah, drinks, water]
[John, eats, candy]
[Richard, runs, around, in, the, morning]
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

        List<List<String>> mainList = new ArrayList<>();
        List<String> list = new ArrayList<>();
        for (String s : array) {
            String[] x = s.split(" ");
            for (int i = 0; i < x.length; i++) {
                list.add(x[i]);
            }
            mainList.add(list);
            list = new ArrayList<>();
        }
Run Code Online (Sandbox Code Playgroud)

但我不知道接下来该做什么.如何实现元素的比较,并在此基础上更换线条.将字符串分成数组以访问第二个元素是否正确?即使你只是提出建议,我也会很高兴.

孙兴斌*_*孙兴斌 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());
Run Code Online (Sandbox Code Playgroud)

在java-8中,它可以缩短到这个:

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

  • 非常看起来OP不会理解这个...... (4认同)