- java类集(动态对象数组)Java 集合框架
- Collection接口
- List集合接口
- List特点
- ArrayList
- 常用方法
- 适用的场景
- ArrayList扩容机制
- LinkList
- 常用方法
- 适用的场景
- Vector
- 适用的场景
- ArrayList和Vector的区别
- ArrayList和LinkList的区别
- Set集合接口
- Set特点
- HashSet
- 常用方法
- 适用场景
- TreeSet
- 常用方法
- 适用场景
- 重复元素消除
- 什么时候适用List时候使用Set?
- Map集合接口
- Iterator输出Map集合:
- Map集合的特点
- HashMap实现原理
- 常用方法
- 适用场景
- ConCurrentMap
- ConCurrentMap的原理
- 常用方法
- 适用场景
- 总结
++写在前面++
如果觉得有帮助可以点赞收藏支持一下,如果能关注一下就再好不过了ヾ(≧▽≦*)o,之后还会分享许多干货,话不多说
java类集(动态对象数组)Java 集合框架Java类集常用可分为Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5之后,增加了Queue体系集合,代表一种队列集合实现。
思维导图
如果看不清楚 可以关注私信思维导图即可获得
1有序
2可重复
3动态增长
ArrayList是基于数组实现的线性表,本质是动态修改数组
ArrayList objectName =new ArrayList<>(); // 初始化
1 频繁的查询元素
2 只需要在列表末尾进行添加和删除元素 *** 作
两种情况
1无参构造
ArrayList<String> list = new ArrayList<>();//无参的构造方法创建ArrayList对象
点进去分析代码
2指定初始容量的构造方法
ArrayList<String> list2 = new ArrayList<>(9);//设置大小以后的构造方法创建ArrayList对象
3使用add(T t)方法
本质一种线性表,并不会按线性的顺序存储数据 而是在每一个节点里存到下一个节点的地址。
LinkedList list=new LinkedList();
频繁的在列表开头、中间、末尾等位置进行添加和删除元素 *** 作。
VectorVector提供一个子类Stack,可以挺方便的模拟“栈”这种数据结构(LIFO,后进先出)
适用的场景现在不推荐使用Vector
ArrayList和Vector的区别1 ArrayList从JDK1.2开始,而Vector从JDK1.0开始
2 ArrayLis是非线程安全,而Vector是线程安全的
3 ArrayLis异步处理,性能高,而Vector同步处理,性能低
4 ArrayLis可以使用Iterator、ListIterator、foreach.输出,而Vector除了Iterator、ListIterator、foreach还可以用Enumeration
1 ArrayList封装的是一个数组,而LinkList是链表实现
2 ArrayList的时间复杂度是1,而LinkList是n.
内部不允许保存重复元素
HashSetHashSet sites = new HashSet();//初始化
本质一个不允许有重复元素的集合,但是可以为一个NULL
需要使用集合保存一组对象时,同时要求对象不重复,并且对存取的速度快的场景
TreeSetSet treeSet=new TreeSet();//初始化
本质使用升序去排序的集合,不允许放入null值
需要使用 SortedSet 中的 *** 作,或者按顺序迭代对你来说是重要的
重复元素消除重复元素消除依靠的是两个方法
1 hash码:Public int hashCode();
2 对象比较:Public boolean equals(Object obj)
在进行对象比较的过程中,首先会使用hashCode()方法与集合中已经保存的代码进行匹配比较;如果代码相同则再使用equals()方法进行属性的依次比较;如果全部相同;则为相同元素;
保存自定义类对象时优先使用List接口
保存系统类的信息的时候优先使用Set接口
Map接口中保存的数据是多个Map.Entry接口封装的二元偶对象,所以就必须采用Map集合的迭代输出;
1 使得Map接口中的entrySet(),将Map集合变为Set集合;
2 取得Set接口实例后就可以利用iterator方法取得iterator的实例化对象;
3 使用iterator迭代找到每一个Map.Entry对象,并进行Key与Value
Set<Map.Entry<String, Integer>> set = map.entrySet();//将Map集合转变为Set集合
Iterator<Map.Entry<String,Integer>> iter = set.iterator(); //获取Iterator接口
Map集合的特点
键值对一一对应,可重复
HashMap实现原理HashMap
只要是key-value结构的,一般我们就用HashMap
ConCurrentMapConcurrentHashMap是一个线程安全,并且是一个高效的HashMap。
ConCurrentMap的原理当多个线程对公共数据访问时,采用ConcurrentMap,当需要对数据进行更新时,会对数据进行上锁,其他数据正常访问,实现线程安全,避免线程阻塞。
常用方法 适用场景多线程情况下。
总结collection是为了便于输出,而Map便于根据Key去寻找value。
开发中优先使用ArrayList(可重复)、HashSet(不可重复)、HashMap(key-value)。
如果觉得有帮助可以点赞收藏支持一下,如果能关注一下就再好不过了ヾ(≧▽≦*)o
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)