Java HashMap Contents
本问题已经有最佳答案,请猛点这里访问。
我有一个hashmap来存储我的
1 | x.get(i).add(str) |
为了获取数据,我只使用哈希的
如果我有这个哈希值:
1 2 3 4 | int -> array of strings 1 ->"a","b","c" 2 ->"aa","bb","cc" 3 ->"aaa","bbb","ccc" |
我的问题是,读取数据的顺序不一致。在1台电脑中,它可能按以下顺序读取按键:2、1、3。在另一台电脑中,它可能按以下顺序读取:1、2、3。
我希望所有PC机的读取顺序都相同。它们进入hashmap的顺序也相同,但为什么hashmap读取密钥集的顺序不同?
你读过《以东记》1〔0〕的《雅瓦多书》吗?它不能保证订购。
This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.
如果您想要一致的订购,请使用
您需要使用treemap而不是hashmap
实际上,没有办法控制哈希图中元素的输入顺序,但是可以在处理它们之前对它们进行排序。
1 2 3 4 5 6 7 8 9 10 11 | public class HashMapSample { public static void main(String[] args) { Map<Integer,List<String>> myHash = new HashMap<>(); myHash.put(1, Arrays.asList("a","aa","aaa")); myHash.put(3, Arrays.asList("c","ccc","ccc")); myHash.put(2, Arrays.asList("b","bb","bbb")); System.out.println(myHash); myHash.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).forEach(System.out::println); } } |