在对包含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);
出现错误 Collections 不能应用于(java.util.ArrayList>)
有人可以指出正确的方向来解决这个问题吗?
谢谢
答案 0 :(得分:2)
如果要对multiMarkArray
中包含的所有列表进行排序,则应该
for (ArrayList<String> strings : multiMarkArray) {
Collections.sort(strings);
}
代替
Collections.sort(multiMarkArray);
这将对每个列表中的字符串进行排序。但是multiMarkArray
中列表的排序不会受到影响。
答案 1 :(得分:1)
您只能对包含实现Comparable的元素的Collection进行排序。
答案 2 :(得分:0)
要排序,您需要一个排序条件。 ArrayList没有内置的排序标准,因为没有自然的方法可以比较两个ArrayList。
您必须通过使用两个参数调用sort
的版本并传递Comparator<ArrayList<String>>
来提供条件。
答案 3 :(得分:0)
集合sort适用于“可比较”对象(extends Comparable
):
public static <T extends Comparable<? super T>> void sort(List<T> list) Sorts the specified list into ascending order, according to the natural ordering of its elements.
或者您可以使用自己的比较器发送带有第二个参数的排序方法:
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.