Set和Map

Set和Map

TreeSet和TreeMap在Java中利用搜索树实现的Map和Set;实际上是用的红黑树,而红黑树是一颗近似平衡的二叉搜索树
关于二叉搜索树 :见下面链接:
链接

HashSet和HashMap在java中利用哈希表实现;Java中使用哈希桶方式解决冲突的;Java会在冲突链表长度大于一定的阀值后,将链表转变为搜索树(红黑树);

Set

注意:

  1. Set继承自Collection接口类
  2. Set中只存储了key,并且要求key一定唯一
  3. Set的底层是使用Map实现的,其使用key与Object的一个默认对象作为键值对插入到Map中
  4. Set的最大功能就是对集合中的元素去重
  5. 实现Set接口的常用类有TreeSet、HashSet,还有一个LinkedSet,LinkedSet是在HashSet的基础上维护了一个双向链表来记录元素的插入顺序
  6. Set中的key不能修改,如果需要修改,将原来的删除掉,重新插入
  7. Set中不能插入null的key

Set中的常用方法:

方法解释
boolean add(E e)添加元素
void clear()请空
boolean contains(Object o)判断元素是否存在
boolean remove(Object o)删除元素
Object[] toArray()Set中的元素转换数组

Map

Map中存储的就是Key-value的键值对,Set中只存储了key。
Map是一个接口类,没有继承Collection,该类中存储的是的键值对,并且k一定是唯一的,不能重复。

注意:

  • Map是一个接口,不能实例化对象,如果需要只能,实例化其实现类TreeMap和HashMap。
  • Map中存放的键值对的key是唯一的,value可以重复
  • 在Map中,插入键值对的时候,key不能为空,但是value可以为空
  • Map中的key可以全部分离出来存储在Set中(因为key不重复)
  • Map中value可以分离出来,存储在Collection中(因为value有重复)
  • Map的key不能修改,只能删除再重新插入,value可以修改

Map中的常用方法:

方法解释
V get(Object key)返回key对应的value
V getOrDefault(Object key,Object defaultValue)返回key对应的value ,key不存在返回默认值
V put(K key ,V value)设置key对应的value,第一次为插入
V remove(Object o)删除key对应的映射关系
boolean containsKey(Object key)判断是否包含key
boolean containsValue(Object value)判断是否包含value
Set<Map.Entry<k,v>>entrySet()返回所有的key-value映射关系

关于Map.Entry<k,v>
Map.Entry<k,v>是Map中实现存放key-value的内部类,主要提供了key-value的获取,以及value的设置和key的比较方式。

方法解释
K getKey()返回entry中key
V getValue()返回entry中value
V setValue(V value)将键值对中value替换
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无赖H4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值