java - 对包含列表的集合进行排序

标签 java collections

我有很多列表,每个列表包含 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/

相关文章:

mysql - 如何选择具有相同外部列表(两个表)的记录?

java - 在用户捐款/未捐款后隐藏/显示 SrartApp 广告

java - 如何在 Java 中向 Row[] 添加手动值

java - MySQL 中 SUM 结果的数据类型

c# - 通过对多个属性进行分组来创建对象列表

collections - 在Silverlight 2中渲染 View 模型的异构集合

php - 把 Laravel Query 变成 Key Value?

java - 如何用java编写自己的比较器类?

java - 库抛出 AssertionError 使我的测试失败

java - Selenium 似乎阻止我的二进制文件打开动态库