Java基础之Map

一、Map集合特点

Collection存放的是:一个一个的数据
Map存放的是:一对儿一对儿的数据
**特点:** 
1. 键不能重复
2. 值可以重复
3. 可以根据键找到值。

二、使用Map集合添加方法保存数据

public V put(K key, V value):添加一个键值对,返回被替换掉的本来的value值。

三、使用“键找值”的方式遍历Map集合

  1. 首先拿到所有的键:keySet方法
  2. 根据每一个键找到对应的值:get方法

四、使用“键值对”的方式遍历Map集合

  1. 直接拿到所有的键值对:entrySet
  2. 拿到键:getKey
  3. 拿到值:getValue

五、使用HashMap存储自定义键值对的数据

  1. 如果自定义的类作为value使用,没有要求。
  2. 如果自定义的类作为key使用,必须同时覆盖重写equals和hashCode方法。

六、常用的接口实现类:

(1)HashMap:底层有哈希表,查找so快,HashSet底层就是在复用HashMap。
(2)LinkedHashMap:是HashMap的子类,速度也挺快,但额外还有链表,维护先后顺序。

七、常用方法:

public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的
值。
public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
public Set<K> keySet() : 获取Map集合中所有的键,存储到Set集合中。
public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。

tips:
(1)使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换成指定的新值。
(2)Map集合不能直接使用迭代器或者foreach进行遍历,因为Map并不是Collection的子接口,但是转成Set之后就可以使用了。

(3)JDK9对集合添加的优化:

Java 9,添加了几种集合工厂方法,更方便创建少量元素的集合、map实例。新的List、Set、Map的静态工厂方法可以更方便地创建集合的不可变实例。
注:
1:of()方法只是Map,List,Set这三个接口的静态方法,其父类接口和子类实现并没有这类方法,比如HashSet,ArrayList等待;
2:返回的集合是不可变的,如果尝试改变,则会发生UnsupportedOerationException异常;
3:对于Set来说,若中间有重复的,将会发生IllegalArgumentException异常。

猜你喜欢

转载自blog.csdn.net/sunshinegirl168660/article/details/81515791