我是java新手,正在学习哈希图的概念。
我很困惑哈希图中的键是如何排序的。
我知道它基于字符串长度。
但我很困惑当字符串长度相同时数据如何排序。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapExample
{
public static void main(String args[])
{
Map<String,String> map = new HashMap<String,String>(20);//SPECIFYING THE TYPE FOR FINDING HASH CODES.
//Adding values to the HashMap
map.put("key value a", "test value 1");
map.put("key value b", "test value 2");
map.put("key value c", "test value 3");
System.out.println("Retrieving values from HashMap");
retrieveValuesFromListMethod(map);
System.out.println("**********************");
}
/*This method retrieves values from Map
*/
public static void retrieveValuesFromListMethod(Map map)
{
Set keys = map.keySet();
Iterator itr = keys.iterator();
String key;
String value;
while(itr.hasNext())
{
key = (String)itr.next();
value = (String)map.get(key);
System.out.println(key + " - "+ value);
}
}
}
这是我的代码。
输出是
Retrieving values from HashMap
key value c- test value 3
key value b- test value 2
key value a- test value 1
**********************
但是如果我给出 aa,ab,ac 则输出是不同的
Retrieving values from HashMap
key value ab - test value 2
key value aa - test value 1
key value ac - test value 3
**********************
对于 1,2,3
Retrieving values from HashMap
key value 1 - test value 1
key value 2 - test value 2
key value 3 - test value 3
**********************
hashmap中是如何排序的?请帮忙!!
提前致谢。
java.util.HashMap 是无序的;你不能也不应该假设
除此之外的任何事情。
此类不保证映射的顺序;特别是,它不保证顺序保持不变
随着时间的推移。
java.util.LinkedHashMap 使用插入顺序。
此实现与 HashMap 的不同之处在于,它维护一个贯穿其所有条目的双向链表。这个链接的
list 定义迭代顺序,通常是中的顺序
哪些键被插入到映射中(插入顺序)。
java.util.TreeMap,一个 SortedMap,使用自然或自定义排序
的按键。
映射根据其键的自然顺序进行排序,或者通过映射创建时提供的比较器进行排序,具体取决于哪个
使用构造函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)