有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java映射要列出的值

我有一个Map<String,Integer>,它是按这样的值排序的

  public void sortList(Map<String,Integer> map){
         set = map.entrySet();
        list = new ArrayList<Map.Entry<String, Integer>>(set);
        Collections.sort( list, (o1, o2) -> (o2.getValue()).compareTo( o1.getValue() ));

    }

我需要将所有值复制到新列表中

  word_used = new ArrayList<Integer>(map.values());

但它以非排序的顺序保存


共 (2) 个答案

  1. # 1 楼答案

    对从entrySet创建的list进行排序时,不会更改原始Map中条目的顺序。如果需要排序值的List,则必须从sortList方法返回list

    map.values()不会返回排序后的值,因为这些值在Map中没有按任何特定顺序保存。一些Map实现(例如TreeMap)会对键进行排序,但不会对值进行排序

  2. # 2 楼答案

    首先提取列表,对其进行排序,然后用它创建一个新列表

    List<Integer> tmp = map.values();
    Collections.sort(tmp);
    word_used = new ArrayList<Integer>(tmp);
    

    word_used = new ArrayList<Integer>(map.values()
                                          .stream()
                                          .sorted()
                                          .collect(Collectors.toList()));