ArrayList中的Java排序ArrayList

ArrayList中的Java排序ArrayList,java,arraylist,collections,Java,Arraylist,Collections,我在排序包含ArrayList的ArrayList时遇到一些问题 ArrayList<ArrayList<String>> multiMarkArray = new ArrayList<ArrayList<String>>(); String line; while ((line = bufRdr.readLine()) != null) { ArrayList<String> singleMarkArray = new Ar

我在排序包含ArrayList的ArrayList时遇到一些问题

ArrayList<ArrayList<String>> multiMarkArray = new ArrayList<ArrayList<String>>();

String line;
while ((line = bufRdr.readLine()) != null) {
    ArrayList<String> singleMarkArray = new ArrayList<String>();
    for (String word : line.split(" ")) {
        singleMarkArray.add(word);
    }
    Collections.swap(singleMarkArray, 0, 1);
    multiMarkArray.add(singleMarkArray);
}

Collections.sort(multiMarkArray);
System.out.println(multiMarkArray);
Im获取的错误集合无法应用于java.util.ArrayList>

有人能给我指出解决这个问题的正确方向吗


感谢您,您只能对包含实现可比较元素的集合进行排序。

为了进行排序,您需要一个排序标准。ArrayList没有内置的排序标准,因为没有比较两个ArrayList的自然方法

必须通过使用两个参数调用sort版本并传递一个比较器来提供标准。

集合适用于comparable Object extends comparable:

或者,您可以使用自己的比较器发送带有第二个参数的排序方法:


如果要对multiMarkArray中包含的所有列表进行排序,应该执行以下操作

for (ArrayList<String> strings : multiMarkArray) {
       Collections.sort(strings);
}
这将对每个列表中的字符串进行排序。但是multiMarkArray中列表的排序不会受到影响

public static <T> void sort(List<T> list,
            Comparator<? super T> c)
Sorts the specified list according to the order induced by the specified comparator. 
for (ArrayList<String> strings : multiMarkArray) {
       Collections.sort(strings);
}
Collections.sort(multiMarkArray);