一、HashMap基础用法:
public class Main {
public static void main(String[] args) {
HashMap<String,String> hashMap=new HashMap<>();
hashMap.put("s","Sean");
hashMap.put("d","Dam");
hashMap.put("j","James");
hashMap.put("b","Bryant");
System.out.println(hashMap);
System.out.println(hashMap.get("s"));
System.out.println(hashMap.containsKey("s"));
System.out.println(hashMap.keySet());
System.out.println(hashMap.isEmpty());
Iterator it=hashMap.keySet().iterator();//第一种遍历方法
while(it.hasNext())
{
String key=(String)it.next();
System.out.println("key:"+key);
System.out.println("value:"+hashMap.get(key));
}
Set<Map.Entry<String,String>> sets=hashMap.entrySet();//第二种遍历方法
for(Map.Entry<String,String> entry:sets)
{
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}
运行结果:
{b=Bryant, s=Sean, d=Dam, j=James}
Sean
true
[b, s, d, j]
false
key:b
value:Bryant
key:s
value:Sean
key:d
value:Dam
key:j
value:James
b Bryant
s Sean
d Dam
j James
可以看到HashMap是无序的
二、LinkedHashMap基础用法和HashMap基本一致但唯一不同的是,LinkedHashMap是有序的,和插入顺序一致:
public class Main {
public static void main(String[] args) {
LinkedHashMap<String,String> hashMap=new LinkedHashMap<>();
hashMap.put("s","Sean");
hashMap.put("d","Dam");
hashMap.put("j","James");
hashMap.put("b","Bryant");
System.out.println(hashMap);
System.out.println(hashMap.get("s"));
System.out.println(hashMap.containsKey("s"));
System.out.println(hashMap.keySet());
System.out.println(hashMap.isEmpty());
Iterator it=hashMap.keySet().iterator();
while(it.hasNext())
{
String key=(String)it.next();
System.out.println("key:"+key);
System.out.println("value:"+hashMap.get(key));
}
Set<Map.Entry<String,String>> sets=hashMap.entrySet();
for(Map.Entry<String,String> entry:sets)
{
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}
运行结果:
{s=Sean, d=Dam, j=James, b=Bryant}
Sean
true
[s, d, j, b]
false
key:s
value:Sean
key:d
value:Dam
key:j
value:James
key:b
value:Bryant
s Sean
d Dam
j James
b Bryant
HashMap和LinkedHashMap不同的原因就是:
HashMap和LinkedHashMap对Entry的存储结构(哈希表和拉链法)
但是LinkedHashMap多了该链表就可以记录插入顺序了