我有很多列表,每个列表包含 4 个元素,全是字符串。
现在我有一个Set<List>
它存储上述所有列表。
我想根据列表中的字段对集合进行排序。
例如。list1=["x","2"], list2=["a","5"], list3=["g","1"]
和set.add(list1), set.add(list2), set.add(list3)
.
现在我想根据列表中的第二个字段对该集进行排序。
最佳答案
所以你有这样的:
List<String> list1 = Arrays.asList("x", "2");
List<String> list2 = Arrays.asList("a", "5");
List<String> list3 = Arrays.asList("g", "1");
还有一个 super 列表
Set<List<String>> set = new HashSet<List<String>>();
set.add(list1);
set.add(list2);
set.add(list3);
并且您需要对第二个字符串进行排序的列表:
List<List<String>> list = new ArrayList<List<String>>(set);
Collections.sort(list, new Comparator<List<String>>() {
@Override
public int compare(List<String> o1, List<String> o2) {
//Index 1 = second element
return o1.get(1).compareTo(o2.get(1));
}
});
完整示例
列表 list1 = Arrays.asList("x", "2"); 列表 list2 = Arrays.asList("a", "5"); 列表 list3 = Arrays.asList("g", "1");
Set<List<String>> set = new HashSet<List<String>>();
set.add(list1);
set.add(list2);
set.add(list3);
List<List<String>> list = new ArrayList<List<String>>(set);
Collections.sort(list, new Comparator<List<String>>() {
@Override
public int compare(List<String> o1, List<String> o2) {
//Index 1 = second element
return o1.get(1).compareTo(o2.get(1));
}
});
for(List<String> li : list) {
System.out.println(li);
}
创建此输出/排序:
[g, 1]
[x, 2]
[a, 5]
关于java - 对包含列表的集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34430277/