Java 按一定顺序排列hashmap

Java 按一定顺序排列hashmap,java,Java,假设我有一个如下的hashmap Map<String,List<String>> nameMap = new HashMap<String,List<String>>(); Map nameMap=newhashmap(); 另外,hashmap中已经有以下键值 马丁-1 朱莉娅-3 安德鲁-2 史蒂夫-5 现在的问题是我有一个特定的顺序,我需要hashmap来保存,当我打印出映射中的条目时,它应该按照我需要的顺序打印 我需要的订单是 朱莉娅

假设我有一个如下的hashmap

Map<String,List<String>> nameMap = new HashMap<String,List<String>>();
Map nameMap=newhashmap();
另外,hashmap中已经有以下键值

马丁-1 朱莉娅-3 安德鲁-2 史蒂夫-5

现在的问题是我有一个特定的顺序,我需要hashmap来保存,当我打印出映射中的条目时,它应该按照我需要的顺序打印

我需要的订单是

朱莉娅-3 安德鲁-2 史蒂夫-5 马丁-1


我知道我可以使用链接hashmap来保持顺序。但是我原来的是一个Hashmap,我如何按照我需要的顺序排列它呢?

Hashmap是无序的。您可以使用LinkedHashMap

,因为
HashMap
是未排序的,并且由于它的构造方式无法进行适当排序*,因此这里有两个简单的选项:

  • 创建一个
    LinkedHashMap
    ,并按所需顺序用原始
    HashMap
    中的数据填充它,或
  • HashMap
    键集
    中创建一个临时列表,根据需要对其排序,然后迭代该排序集,并按所需顺序从原始
    HashMap
    中检索数据。
    *
    HashMap
    条目根据其哈希代码排列在“bucket”中,这是非常任意的

哈希映射是无序集合(项目是按哈希排序的,您不能依赖于此)。您可以使用TreeMap。

在什么是基于订单的标准中,如果您不解释,在我看来它只是随机的。“这个类不保证映射的顺序;特别是,它不保证随着时间的推移顺序保持不变。”简言之,您不想仅仅依靠hashmap来获得特定的顺序。你需要做一些其他的事情。你不能对HashMap排序-条目是根据键的哈希值排列的。如果存在一个固定的标准,你可以申请排序,你可以使用Collections.sort(list,comparator);按所需顺序对元素进行排序。list是要排序的列表,comparator是实现comparator接口的类。