有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

HashMap中的java插入无法正常工作

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

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

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

在输出中,我希望得到排序的映射,但它是随机的。 请帮忙


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    ^{}是无序的。使用^{}进行排序。试试这个:

    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是^{}的一个例子,这意味着可以对键的顺序进行排序,当对键进行迭代时,可以预期它们将按顺序排列

    另一方面,HashMap则没有这样的保证。因此,当迭代HashMap的键时,您无法确定它们的顺序

    HashMap通常效率更高,所以只要不关心键的顺序,就可以使用它

    HashMap被指定为O(1):“基本操作(get和put)的恒定时间性能,假设哈希函数将元素正确地分散在存储桶中”TreeMap被指定为containsKey、get、put和remove操作的{}时间成本保证。查看我分享的Javadocs以了解更多细节