4.Map集合

Map 集合

-Map集合特点

Map 的特点。

  1. Map每个元素由键与值两部分组成
  2. Map键不能重复,每个键对应一个值
  3. 键和值可以为null

java.util.Map<K, V>是一个接口,注意和Collection接口并没有直接联系。
第一个泛型代表:键是什么类型
第二个泛型代表:值是什么类型
二者可以相同,也可以不同。

key-(学号)不能重复

value-(姓名)可以重复


Map的常用实现类有:
1. HashMap:昨天学习的HashSet其实底层就是在复用HashMap。里面也是哈希表,速度也是嗷嗷快。
2. LinkedHashMap:底层也是哈希表,但是额外还有链表,从而维护顺序。
3. TreeMap:带有键的大小排序功能。

注意事项:
由于Map当中的key不能重复,那么就要考虑怎么确定元素对象是否重复?
如何确定两个对象是一样还是不一样:由equals和hashCode方法决定。

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

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


public V remove(Object key):根据键删除对应的键值对儿,返回value值。


public V get(Object key):根据键,获取对应的value值。


public Set<K> keySet():获取所有的键集合。


public Collection<V> values():获取所有的值。

-使用”键找值”的方式遍历Map集合

注意事项:

如果自定义的类型,当做Map里面的value使用,那么没有任何要求。value可以重复。

如果自定义的类型,当做Map里面的key使用,那么key不可以重复,就必须覆盖重写equals和hashCode。
既然Map和Collection接口没有直接联系,那么Map也没有实现java.lang.iterable接口,所以Map不能直接使用迭代器。

    keySet():获取所有的键,然后再根据键获取值get方法。
 
 


-使用”键值对”的方式遍历Map集合

Entry键值对对象遍历Map集合的原理。

Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在Map中是一一对应关系,这一对对象又称做Map 中的一个Entry(项)。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。

 

    entrySet():直接获取所有别的键值对儿。


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

java.util.LinkedHashMap是HashMap的子类,

里面也有哈希表,速度也比较快,但是额外还有链表,用来专门维护顺序。
 

hashMap中的排序

一不一样(相同比较器):由equals和hashCode决定。

谁大谁小(大小比较器):由Comparable或者外部指定的Comparator接口决定。



   注意事项:

    如果希望对自定义的类型对象进行排序,那么必须实现Comparable接口。
 
 
 
 

下面是集合中补充的方法:

1.containsKey方法:

用来判断是否包含指定的键。

2.getOrDefault方法:

获取键对应的值;如果没有,那么返回第二个参数,代表默认值。
 
 

3.静态方法of

 从Java 9开始,集合的接口当中添加了静态方法of,用来快速生成集合。

注意事项:

    通过这种方式创建出来的集合,是不可变集合。

    如果尝试改变集合当中的内容,那么将会发生UnsupportedOperationException。

猜你喜欢

转载自blog.csdn.net/qq_40406929/article/details/81489344