常用Set集合
Set集合的特点
Set接口下的集合都会有以下特点
- 不能存储重复元素
- 没有索引
HashSet
HashSet集合的特点
- 底层数据结构是哈希表
- 存储元素的顺序和遍历获取出来的顺序可能不一致
- 没有索引
- 集合中不能存储重复元素
创建对象
常用方法
方法 | 解释 |
---|---|
boolean add(E e) | 添加元素,如果元素添加不成功 返回值代表是否添加成功 |
boolean remove(Object o) | 删除元素 ,返回值代表删除元素是否成功 |
boolean contains(Object o) | 判断元素是否存在 |
int size() | 获取集合的大小 |
可以看到愚生浅末四个字符已经装入set,且f为true证明添加成功。
我们再试试删除:
判断是否存在:
末是存在于set的,所以返回值为true。
获取集合的大小:
遍历
1.转换为数组遍历
结果:
前面说过:存储元素的顺序和遍历获取出来的顺序可能不一致。
2.使用迭代器遍历
3.foreach遍历
常用Map集合
Map集合的概述
Map接口是双列集合的顶层接口,下面是Map接口的定义
存储的数据必须包含key和value。
key和value在Map集合中是一一对应的关系。一个key对应一个value。
key在map集合中是不会重复的。
HashMap
HashMap集合的特点
- 底层数据结构是哈希表
- 存储元素的顺序和遍历获取出来的顺序可能不一致
- key不会重复
创建对象
例如:
常用方法
方法 | 解释 |
---|---|
V put(K key, V value) | 添加元素,如果key不存在就添加,如果key |
V get(Object key) | 根据key获取对应的value值返回。如果key不存在就返回null |
V remove(Object key) | 根据key删除map中对应的键值对。并且把删除的value返回 |
boolean containsKey(Object key) | 判断key是否存在 |
int size() | 集合中键值对的对数 |
void clear() | 清空集合中的所有键值对 |
遍历
1.使用entrySet遍历
map集合的entrySet方法可以获取一个Set集合,集合中存放的是Entry对象,一个Entry对象相当于一个键值对。我们可以遍历set集合拿到Entry对象,然后获取出里面的键和值。
使用迭代器遍历entrySet
使用foreach遍历entrySet
2.使用keySet遍历
map集合的keySet方法可以获取一个Set集合,集合中存放的是所有的key。我们可以遍历set集合拿到key对象,然后通过key获取对应的value。
HashMap的key去重原理
HashMap在添加元素的时候会判断集合中是否有key和本次存入的key相同。判断的时候主要是通过hashCode方法和equals方法来进行判断的。hashCode相同,并且equals判断也相同就会认为是同一个key。
所以如果我们要存储到HashMap中的key是一个自定义的类型。就需要根据情况判断下是否需要重写下hashCode方法和equals方法。重写的时候使用IDEA的提示即可。
注意:HashSet存储数据其实也是使用了HashMap。所以如果往HashSet中存储自定义对象也要看情况是否需要重写hashCode方法和equals方法。
如图片失效等情况请参阅公众号文章:https://mp.weixin.qq.com/s/NLKGamezcB3nnQ3BgEDc9g
欢迎关注我的公众号:愚生浅末,一起交流学习。
__EOF__
本文链接:https://www.cnblogs.com/kohler21/p/16449317.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!