Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何按第二个单词对列表排序?_Java_Sorting_Arraylist_Collections - Fatal编程技术网

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

Java 如何按第二个单词对列表排序?,java,sorting,arraylist,collections,Java,Sorting,Arraylist,Collections,我收集了如下数据: John eats candy Richard runs around in the morning Hannah drinks water 我将每个单词分开,添加到数组中,得到: [John, eats, candy] [Richard, runs, around, in, the, morning] [Hannah, drinks, water] 输出应为(第二个单词按字母顺序排序) 这是我的密码: List<List<String>

我收集了如下数据:

John eats candy
Richard runs around in the morning
Hannah drinks water
我将每个单词分开,添加到数组中,得到:

[John, eats, candy]
[Richard, runs, around, in, the, morning]
[Hannah, drinks, water]
输出应为(第二个单词按字母顺序排序)

这是我的密码:

        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<>();
        }
List mainList=new ArrayList();
列表=新的ArrayList();
for(字符串s:数组){
字符串[]x=s.split(“”);
对于(int i=0;i
但我不知道下一步该怎么办。如何实现元素的比较,并在此基础上替换行。 将字符串分成数组以访问第二个元素是否正确?
即使你只是提出一些建议,我也会很高兴的。

第一次尝试时,你可以编写一个
比较器:

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());

第一次尝试时,您可以创建一个
比较器

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());

“看起来OP不会明白这一点……”尤金说。但我认为这可能没有必要。因为它可以正确地解决问题…看起来OP不会理解这一点…@Eugene Makes-Since。但我认为这可能没有必要。因为它可以正确地解决问题…提示1:首先尝试编写一个方法,该方法接受其中两个列表,并返回
int
值:+1(如果第二个列表“大于”第一个列表),1(如果“小于”第一个列表),0(如果它们“相等”)。提示2:注意一些行可能只包含一个单词。提示3:在JavaAPI文档中查找集合.sort()
。(或者
List.sort()。谢谢提示1:首先尝试编写一个方法,该方法接受其中两个列表并返回
int
值:如果第二个列表“大于”第一个列表,则返回+1;如果“小于”第一个列表,则返回1;如果“相等”,则返回0。提示2:注意一些行可能只包含一个单词。提示3:在JavaAPI文档中查找集合.sort()
。(或者
List.sort()。非常感谢。
mainList.sort(Comparator.comparing(strings -> strings.get(1))); // compare using the second element(index 1) of every list