JAVA集合-Map

来源:互联网 发布:跟章泽天是校友 知乎 编辑:程序博客网 时间:2024/06/12 20:08
Map 集合

一、感性认知:
1、我们学过那么多的集合了,为什么还要学习map集合?

二、理性认知:
java.util.map[I]
Map[I]
SortedMap[I]
TreeMap[C] implements SortedMap[I]
HashMap[C]
LinkedHashMap[C] implements Map[I]
Dictionary[C]
Hashtable[C] implements Map[I]

1、HashMap
a、由键可以取值,但是键是唯一的,值可以是重复的
b、hashMap是有key的hash值来排序的,在遍历的时候是随机取出数据的,不是线程 同步的,线程不安全
c、hashMap 经常用到的方法 clear() remove() put() get() putAll()
d、有四种遍历方式,推荐大家使用
for(Map.entry<k,v> entry : map.entrySet()){
syso(entry.getkey()+""+entry.getvalue)

}
ps(尤其是容量大的时候,效果最好)
e、它的键只能一个可以为null,它的值可以有多个null
d、应用场景:数据没有顺序,有键和值存在映射关系
2、Hashtable
a、现在基本不用,现在有一个替代的集合(currentHashMap)
b、它是线程同步的,线程安全,但是在存取数据的时候,只能有一个线程操作,速度 慢
c、它的键值不可以为null
3、TreeMap
a、它是有顺序的,它的顺序是由key来决定的(因为treeMap 是有key的hash来存放key
b、它的排序(默认自然排序升序)是重写comepareTo方法
c、应用场景:需要有序的数据
4、LinkedHashMap
a、它的顺序是先存先取
b、在存取速度是一般情况是慢于hashMap的,但是当hashMap的容量很大,数据很 少的时候,linkedHashMap的存取速度大于hashMap
c、应用场景: 比如购物车

5、Map集合的四种遍历方式
a、直接拿到key来遍历 for(String s : map.keySet())
b、用iterator遍历
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
c、推荐大家使用的方式
for(Map.Entry<String, String> entry : map.entrySet())
d、直接根据value来遍历 for(String v : map.values())
6、如何对HashMap中的value进行排序。
a、把当前hashMap中的entry<>对象存放到set集合中
b、把entry的set集合存放到List集合中
c、对这个list集合进行排序
d、排序好之后,存放到map集合中(LinkedHashMap)
0 0
原创粉丝点击