HashMap中的插入无法正常工作

时间:2014-03-23 05:27:15

标签: java sorting hashmap

我正在将一个已排序的对象插入到HashMap中,但它没有被排序。

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

    syso(new Gson().toJson(sortedMap);

在输出中我期待排序的地图,但它是随机的。 请帮忙。

2 个答案:

答案 0 :(得分:1)

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被指定为containsKey,get,put和remove操作的'保证log(n)时间成本。通过我分享的Javadocs获取更多详细信息。

答案 1 :(得分:0)

HashMap未排序,它存储在键值对中。 值与相应的键映射。