Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HashMap将值添加到列表的开头_Java_Hashmap - Fatal编程技术网

Java HashMap将值添加到列表的开头

Java HashMap将值添加到列表的开头,java,hashmap,Java,Hashmap,我正在研究java HashMaps,发现它会将值添加到列表的开头。比如说, hm.put(迈克,2); 普特(安德鲁,3岁) 现在,如果我使用迭代器打印hasmap,我得到 安德鲁3 迈克2 我想在先进先出的方式,而不是后进先出的方式添加项目。。。有办法吗?要使用队列吗 哈希映射没有顺序,您从迭代器中以“错误”的顺序返回它们的事实只是哈希如何在键上发生的函数 您希望如何具体使用此数据结构?请尝试改用。我认为HashMaps不能保证秩序 LinkedHashMap<String,Stri

我正在研究java HashMaps,发现它会将值添加到列表的开头。比如说,

hm.put(迈克,2); 普特(安德鲁,3岁)

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

安德鲁3

迈克2


我想在先进先出的方式,而不是后进先出的方式添加项目。。。有办法吗?

要使用队列吗

哈希映射没有顺序,您从迭代器中以“错误”的顺序返回它们的事实只是哈希如何在键上发生的函数

您希望如何具体使用此数据结构?

请尝试改用。我认为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());
    }

Java中的映射抽象与后进先出(LIFO)或先进先出(FIFO)的概念不符。这些概念主要适用于有序序列,而映射以完全独立于插入值的顺序的顺序存储,以最大限度地提高效率。例如,HashMap使用散列存储其值,散列函数越随机地分布其值,性能越好。类似地,TreeMap使用一个平衡的二叉搜索树,它按排序顺序存储其值以保证快速查找

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


希望这有帮助

非常感谢。我将尝试使用linkedHashMapA
Map
(以及通常的哈希结构)不是
列表,请检查接口规范。如果您想要订购,您需要一些特定的。
HashMap
Hashtable
不保证订购。同意。LinkedHashMap==HashMap+LinkedList@卢声远 LinkedHashMap不是一个列表
One
Two
Three