复习:集合

集合概况
接口:顶级接口:Collection和map接口,Collection接口存储的单个对象,map存储的是key-value键值对对象
Collection顶级接口下的子接口:list接口(存储的数据是有序的且重复)、set接口(存储的数据是无序的且不能重复)、Queue(多使用优先级处理)
list接口
1.ArrayList:1.数据插入有序2.数据是可以重复的3.存储的数据可以为null4.数据结构为数组5.集合可以自动扩大
应用场景:(数据是有序/数据可以重复/数据是可以存储null)在查询较高的场景
2.LinkedList:底层通过链表实现
应用场景:(数据是有序/数据可以重复/数据是可以存储null)在修改比较高的场景下
3.Vector:线程安全集合类
map接口
1.HashMap:1、底层数据结构是hash表(数组+链表)2、元素重复问题:(key是不能重复,value可重复)3、元素有序问题:插入是无序的4、元素是否可以为null:key和value都可以为null5、16是默认大小6、扩容大小:2倍关系扩容
元素插入:add()移除元素:remove()
应用场景:数据统计场景
2.LinkedHashMap:1、底层数据结构是哈希表2、继承自HashMap:具有HashMap所有的特点3.数据有序:插入有序、访问有序
如何做到数据有序的?添加两个属性:维护一个双向的链表接口
应用场景:数据统计且数据有序(统计数据出现的次数且如果数据次数相等按照插入顺序排序?)
3.HashTable1、底层数据结构是哈希表2、数据重复问题:(key不能重复、value可以重复)3、元素是否可以为null:(key-value都不能为null)4、数据有序问题:数据无序5、线程安全:HashTable是线程安全的6、11是默认大小7、扩容大小:2倍+1
应用场景:数据统计问题(考虑线程安全问题时只能使用该集合)
4.WeakHashMap特点1、数据随着时间推移会消失或减少(弱引用)
Java中四种引用
强引用(strong):强引用所作用对象在内存不足抛出OOM的问题时都不会回收作用的对象
软引用(soft):当内存不足时,在发生GC操作时,软引用所作用的对象会被回收
弱引用(weak):只要发生GC操作,无论内存是否充足,弱引用锁作用对象会被回收
虚引用(phantom):和对象的生命周期无关,主要是来提醒对象被回收
应用场景:在内存紧张情况下,将非关键信息存放在该集合中
5.TreeMap特点数据会按照属性的特征进行排序底层的数据结构:使用红黑树
应用场景:数据排序
set接口
1.HashSet1、HashSet实现基于HashMap:具有HashMap所有的特点2、数据不能重复3、可以存储null值4、数据是无序的
如何通过HashMap实现HashSet?HashMap中存储key-value键值对,Set接口的实现类都是存储单种类型的元素,set的实现中使用了HashMap中的Key来存储元素,Value值给定的是一个Object对象填充
应用场景:数据去重场景
2.LinkedHashSet1、LinkedHashSet是基于LinkedHashMap实现的2、元素是不能重复3、可以存储null值4、数据是有序的(插入和访问有序)
应用场景:数据去重且数据有序
3.TreeSet特点1、TreeSet是基于TreeMap实现的2、数据元素是按照属性进行排序的
应用场景:数据去重且按照属性特征进行大小排序
queue接口
PriorityQueue1、底层数据结构是堆结构,默认是小根堆2、优先级队列保证取出的数据都是队列最小/最大的
应用场景:Top K问题
迭代器
迭代器提供了一种访问集合/容器的访问方式,而不用暴露容器内部实现细节,是一种设计模式
迭代器的使用(三个方法):1.next():获取当前元素2.hasNext():判断是否有下一个元素3.remove():删除当前元素
扩展点1、Iterable接口在所有集合中都可以实现、ListIterable是List接口下特有的迭代器2、Map接口中的迭代器使用:以键值对(entrySet)、以键形式(keys)、以值形式(Values)遍历3、在通过迭代器遍历时删除抛出ConcurrentModificationException异常问题:快速失败问题?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值