Java 向HashMap添加整数
我有一个Java 向HashMap添加整数,java,iterator,hashmap,Java,Iterator,Hashmap,我有一个HashMap,我正在向其中添加数组中的整数。键是整数,值是整数的重复数。当我遍历HashMap以获取HashMap中的键时,它们似乎是以随机顺序排列的。这些钥匙的添加顺序有什么特别的吗?这就是我迭代的方式 Set<String> a = names.keySet(); Iterator i = a.iterator(); while(i.hasNext()) String t = (String) i.
HashMap
,我正在向其中添加数组中的整数。键是整数,值是整数的重复数。当我遍历HashMap
以获取HashMap
中的键时,它们似乎是以随机顺序排列的。这些钥匙的添加顺序有什么特别的吗?这就是我迭代的方式
Set<String> a = names.keySet();
Iterator i = a.iterator();
while(i.hasNext())
String t = (String) i.next();
Set a=names.keySet();
迭代器i=a.迭代器();
while(i.hasNext())
字符串t=(字符串)i.next();
事实上,HashMap
以不确定(不可预测/不可靠)的顺序返回条目。如果希望条目按键顺序显示(因此,2
在3
之前),请使用TreeMap
()。如果希望条目按初始插入顺序显示,请使用LinkedHashMap
()
编辑以添加:您说“键是整数”,但随后您到处使用
String
。请注意,字符串“123”
在字符串“23”
之前排序,就像“abc”
在“bc”
之前排序一样。如果希望将键视为数字,例如按数字顺序排序,则应使用数字类型,例如整数
,而不是字符串
。(从技术上讲,可以给你的TreeMap
一个Comparator
,通过检查字符串值键的内容并进行整数比较来比较它们,但我认为你不想这样做。)事实上,HashMap
以不确定(不可预测/不可靠)的顺序返回条目。如果希望条目按键顺序显示(因此,2
在3
之前),请使用TreeMap
()。如果希望条目按初始插入顺序显示,请使用LinkedHashMap
()
编辑以添加:您说“键是整数”,但随后您到处使用
String
。请注意,字符串“123”
在字符串“23”
之前排序,就像“abc”
在“bc”
之前排序一样。如果希望将键视为数字,例如按数字顺序排序,则应使用数字类型,例如整数
,而不是字符串
。(从技术上讲,可以给您的TreeMap
提供一个比较器
,该比较器通过检查字符串值键的内容并进行整数比较来比较字符串值键,但我认为您不想这样做。)
此类(HashMap)不保证映射的顺序;在里面
特别是,它不能保证订单保持不变
久而久之
如果你想让它们“自然有序”,你可以使用a
如果希望迭代器
按键的添加顺序返回键,可以改为
这个链表定义了迭代顺序,这通常是
将关键点插入地图的顺序(插入顺序)
从
此类(HashMap)不保证映射的顺序;在里面
特别是,它不能保证订单保持不变
久而久之
如果你想让它们“自然有序”,你可以使用a
如果希望迭代器
按键的添加顺序返回键,可以改为
这个链表定义了迭代顺序,这通常是
将关键点插入地图的顺序(插入顺序)
LinkedHashMap
也支持访问顺序。LinkedHashMap
也支持访问顺序。我观察到,使用LinkedHashMap时会按给定顺序存储密钥。我尝试使用树形图,但它并没有按排序顺序返回键。你能举个例子吗?@RaghavShankarTreeMap
将保证键是按字母顺序升序排列的,因为这是String强加的顺序。与之相比,
@RaghavShankar:正如veer所说。我编辑了我的答案来解释这一点。我观察到使用LinkedHashMap会按给定顺序存储密钥。我尝试使用树形图,但它并没有按排序顺序返回键。你能举个例子吗?@RaghavShankarTreeMap
将保证键是按字母顺序升序排列的,因为这是String强加的顺序。与之相比,
@RaghavShankar:正如veer所说。我编辑了我的答案来解释这一点。