我正在将一个已排序的对象插入到HashMap中,但它没有被排序。
Map<Long, Object> sortedObject = new HashMap(Long, Object>();
for(Object sortedObject : sortedObjectList)
{
sortedMap.put(sortedObject.getId(), sortedObject);
}
syso(new Gson().toJson(sortedMap);
在输出中我期待排序的地图,但它是随机的。 请帮忙。
答案 0 :(得分:1)
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
未排序,它存储在键值对中。
值与相应的键映射。