Java 按映射中数组列表的第一个索引进行排序

标签 java sorting

我知道我可以使用 TreeMap 对 Map 进行排序,但我不知道如何按值排序,其中 id 是 ArrayList 的第一个索引。

这是代码:

public void sort()
{
  Map<String, ArrayList<String>> m = new TreeMap<String,ArrayList<String>>();
  String[] name = new String[]{"first name", "second name", "third name"};
  String[] description = new String[]{"first description", "second description", "third description"};
  String[] id = new String[]{"1", "2", "3"};
  m.put(name[0], new ArrayList<String>(Arrays.asList(new String[]{description[0], id[0]})));
  m.put(name[1], new ArrayList<String>(Arrays.asList(new String[]{description[1], id[1]})));
  m.put(name[2], new ArrayList<String>(Arrays.asList(new String[]{description[2], id[2]})));
}

我尝试对 map 进行排序:

SortedSet<Map.Entry<String, ArrayList<String>>> sortedset = new TreeSet<Map.Entry<String, ArrayList<String>>>(
          new Comparator<Map.Entry<String, ArrayList<String>>>() 
          {
              public int compare(Entry<String, ArrayList<String>> o1, Entry<String, ArrayList<String>> o2)
              {
                // return Integer.valueOf(o1.getValue()[1]).compareTo(Integer.valueOf(o2.getValue()[1]));
                return 0;
              } 
          });

最佳答案

TreeMap accepts a custom comparator还。您需要创建一个自定义比较器并将其传递到 TreeMap 中:

// assuming you create mycomparator
Map<String, ArrayList<String>> m = new TreeMap<String,ArrayList<String>>(mycomparator);

关于Java 按映射中数组列表的第一个索引进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20043003/

相关文章:

java - 我可以使用 RMI 从服务器调用客户端方法吗

php - 如何在 PHP 中对多个数组进行排序

php - 使用 php 数组中的键对 div 显示顺序进行排序和更改

创建数组时出现 Java 空指针异常

java - 任何人都可以解释这个声明 - "The point of all lambdas is deferred execution"

java - 为什么 Avalon-Framework 被关闭了?

java.lang.NoClassDefFoundError : javax/validation/ParameterNameProvider

java - 如何对具有两个对象字段的列表进行排序?

sorting - 按功能编程语言排序

mysql - mysql中的日期排序