【问题标题】:How do I put sorted list into a HashMap in order? [duplicate]如何按顺序将排序列表放入 HashMap? [复制]
【发布时间】:2020-06-04 16:21:19
【问题描述】:

所以我这里有这个方法:

public Map<Long,Pkmn> sortByCreator(Map<Long,Pkmn> pkmns) {

        Collection<Pkmn> pkmn_to_get = pkmns.values();
        pkmns = null; //Delete useless memory.

        List<Pkmn> pkmn_to_sort = new LinkedList<Pkmn>();

        for(Pkmn pkmn : pkmn_to_get) {
            pkmn_to_sort.add(pkmn);
        }

        Collections.sort(pkmn_to_sort);

        Map<Long,Pkmn> return_map = new HashMap<Long,Pkmn>();

        for(Pkmn pkmn_data : pkmn_to_sort) {
            return_dex.put(pkmn_data.getId(), pkmn_data);
        }

        return return_dex;
    }

问题在于 Collections.sort(pkmn_to_sort) 对数组进行排序之后;下面的 for 循环将它们 pkmn_data 添加到 Map,但未排序。

我知道 Map 不像一个堆栈,它一个接一个地放入;但我希望它在这种情况下。

有没有人可以按照列表的顺序将列表项添加到地图中?

提前致谢:)

【问题讨论】:

  • 请注意,这对任何事情都没有用处:pkmns = null; //Delete useless memory.

标签: java list dictionary hashmap sortedlist


【解决方案1】:

HashMap 本质上是无序的,尝试使用LinkedHashMap 以保持映射相对于插入的迭代顺序。

【讨论】:

  • 或者一个按key排序的TreeMap
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多