1.简述前提知识
a.
Map
:数据结构基于键值对 Map<k,v>
键值对:k-v
键:存放内容的编号,唯一 key
值:存放的内容 value 旧值被新值覆盖
k和v中可写null和空格
b.方法:
名.put(i,m);
i位置上存m
名.get(i);
返回i位置上的值 键找值
名.containsKey(i);
是否能包含此键
名.containsValue(i);
是否能包含此值
名.clear();
清除
c.获取所有键集合
Set<Integer> set=map.keySet();
//利用iterator输出
Iterator<Integer> it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
d.获取所有值的集合
Collection<String> collection=map.values();
//利用iterator输出
Iterator<String> it1=collection.iterator();
while(it1.hasNext()){
System.out.println(it1.next());
}
e.输出键值映射关系(使用entrySe+iterator和entrySet+for…each) : 遍历
entrySe+iterator:
Set<Map.Entry<Integer,String>> set=map.entrySet();//现将map集合转成set集合
Iterator<Map.Entry<Integer,String>> it=set.iterator();
while(it.hasNext()){
Map.Entry<Integer,String> entry=it.next(); System.out.println(entry.getKey()+"=====>"+entry.getValue());
}
entrySet+for…each :
for(Map.Entry<Integer,String> m:map.entrySet()){ System.out.println(m.getKey()+"===>"+m.getValue());
}
f.HashMap: 默认初始容量16
方法: 键用不可变的类
g. HashTable:线程安全 同步 默认初始容量11
k和v都不能为null
h.TreeMap: k不能为空,v可以为空
2.问题引入和解决
-
HashMap中存的数据为什么是无序的?存和取的顺序不一样?
HashMap再存的时候,是按照key的哈希值的顺序进行存储的。
3.底层代码
版权声明:本文为qq_46603402原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。