Java HashMap为列表的头部增加了价值

Cur*_*der 2 java hashmap

我正在研究java HashMaps,发现它将值添加到列表的头部.例如 ,

hm.put(麦克,2); hm.put(安德鲁,3);

现在,如果我使用迭代器打印hasmap,我得到

安德鲁3

迈克2

我希望以FIFO方式而不是LIFO方式添加项目......有没有办法做到这一点?

Bal*_*a R 7

请尝试使用LinkedHashMap.我不认为HashMaps保证订单.

LinkedHashMap<String,String> lHashMap = new LinkedHashMap<String,String>();

    lHashMap.put("1", "One");
    lHashMap.put("2", "Two");
    lHashMap.put("3", "Three");

    Collection c = lHashMap.values();
    Iterator itr = c.iterator();

    while (itr.hasNext()){
      System.out.println(itr.next());
    }
Run Code Online (Sandbox Code Playgroud)

产量

One
Two
Three
Run Code Online (Sandbox Code Playgroud)


tem*_*def 7

Java中的Map抽象不适用于LIFO或FIFO的概念.这些概念主要适用于有序序列,而映射存储的顺序完全独立于插入值的orde,以便最大限度地提高效率.例如,HashMap使用散列来存储其值,散列函数随机散布其值越多,性能越好.类似地,TreeMap使用平衡二进制搜索树,它以排序顺序存储其值以保证快速查找.

但是,Java确实有一个非常酷的类,叫做LinkedHashMap,我相信它正是你想要的.它提供了HashMap的速度,同时保证了可预测的遍历顺序,该顺序由插入元素的顺序定义.

希望这可以帮助!