所以如果你有这个:
List<Integer> subList;
for example contains: [0, 6] or [2, 6] , [7, 6]
[[0, 6], [2, 6], [7, 6]]
List<List> list;
contains subLists: [0, 6], [2, 6], [7, 6] or [55, 4], [57, 5], [58, 5]
[[[0, 6], [2, 6], [7, 6]], [[55, 4], [57, 5], [58, 5]]]
如何对子列表的第二个值进行升序排序。您可以假设其他子列表中的其他值与前一个或下一个子列表相距很远。从subList到subList没有相同的值。
进入以下内容:
[[[55, 4], [57, 5], [58, 5]], [[0, 6], [2, 6], [7, 6]]]
答案 0 :(得分:0)
使用比较器:
Collections.sort(List<T> list, Comparator<T> c)
并相应地构建比较器
答案 1 :(得分:0)
您可以使用根据子列表的内容进行排序的比较器:
确保所有子列表按降序排序(您的示例似乎反映了此要求):
list.forEach(sublist -> Collections.sort(sublist.sort(Collections.reverseOrder())));
根据子列表的第一个元素
对外部列表进行排序 Collections.sort(list, (sublistone, sublisttwo) -> sublistone.get(0).compareTo(sublisttwo.get(0)));
答案 2 :(得分:0)
Collections.sort(new ArrayList<List<Integer>>(), new Comparator<List<Integer>>() {
public int compare(final List<Integer> o1, final List<Integer> o2) {
return o1.get(1) - o2.get(1);
}
});
答案 3 :(得分:0)
它如下:
public List<List> sortSubList(final List<List> areas) {
List<List> sorted = new ArrayList<>();
conuloop:
for (List<List> area : areas) {
if (sorted.contains(area)) {
continue;
} else {
if (sorted.isEmpty()) {
sorted.add(area);
} else {
int pos = 1;
for (List<List> sortArea : sorted) {
if ((int) sortArea.get(0).get(1) <= (int) area.get(0).get(1)) {
sorted.add(pos, area);
continue conuloop;
} else {
pos += 1;
}
}
sorted.add(0, area);
}
}
}
return sorted;
}
如果你们有任何建议可以提高效率,减少耗时,因为这需要经过大量数据。我很高兴听到它。