我有一个HashMap定义如下:
private final Map<String, DataTable> reports = new HashMap();
当我将新条目放入此HashMap时,它们会根据键以字母顺序排列。它为什么这样做?如何按照我将它们添加到HashMap中的顺序将它们放入?
答案 0 :(得分:2)
HashMap
确实明确定义了您添加的元素的NO顺序。与HashSet
中的元素一样,它们的哈希码是有序的,这或多或少是随机的。
如果您想按插入顺序保留地图中的订单,则可以使用LinkedHashMap代替。如果元素应在插入后进行排序,请使用TreeMap。
答案 1 :(得分:0)
HashMap的重点在于你放弃对排序的控制,这样你就可以在插入和搜索方面获得性能提升,以及其他好处。要收回对订购的控制权,请使用SortedMap。
答案 2 :(得分:0)
LinkedHashMap- preserve the insertion order.
TreeMap - Elements sorted after insertion.
HashMap不保持任何插入元素的顺序。
答案 3 :(得分:0)
HashMap不会以添加方式添加值,只是根据键随机添加值。要按添加使用LinkedHashMap
的顺序添加值,或者如果希望按字母顺序排序地图,则使用TreeMap。我希望这能清除你的怀疑。