将值映射到列表

时间:2016-04-06 10:34:12

标签: java list dictionary

我有一个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 个答案:

答案 0 :(得分:2)

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

map.values()不会返回已排序的值,因为这些值不会以Map中的任何特定顺序保留。某些Map实现(例如TreeMap)会对键进行排序,但不会对值进行排序。

答案 1 :(得分:1)

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

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()));