HashMap中的插入不能正常工作



我插入一个排序对象到HashMap,但它没有得到排序。

Map<Long, Object> sortedObject = new HashMap(Long, Object>();    
for(Object sortedObject : sortedObjectList)
    {
      sortedMap.put(sortedObject.getId(), sortedObject);
    }
    syso(new Gson().toJson(sortedMap);

在输出中,我期待排序映射,但它是随机的。请帮助。

Hashmap是无序的。使用Treemap排序。试试这个:

Map<Long, Object> sortedObject = new HashMap<Long, Object>(); 
for(Object sortedObject : sortedObjectList)
{
    sortedMap.put(sortedObject.getId(), sortedObject);
} 
System.out.println("Unsort Map......");
System.out.println(new Gson().toJson(sortedMap);
System.out.println("Sorted Map......");
Map<String, String> treeMap = new TreeMap<String, String>(sortedMap);
System.out.println(new Gson().toJson(treeMap);

TreeMap是一个SortedMap的例子,这意味着键的顺序可以排序,当迭代键时,你可以期望它们是有序的。

另一方面,

HashMap不做这样的保证。因此,当迭代HashMap的键时,您无法确定它们的顺序。

HashMap通常会更高效,所以当你不关心键的顺序时就使用它。

HashMap指定为O(1):"假设哈希函数将元素适当地分散到桶中,基本操作(get和put)的恒定时间性能"。TreeMap指定为保证log(n)的时间开销,用于containsKey, get, put和remove操作。查看我分享的Javadocs以了解更多细节。

HashMap没有排序,它以键值对存储。

相关内容

  • 没有找到相关文章