Java 集合框架只收藏这一篇就够了

Java 集合框架只收藏这一篇就够了,第1张

Java 集合框架
  • 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体系集合,代表一种队列集合实现。
思维导图

如果看不清楚 可以关注私信思维导图即可获得

Collection接口

List集合接口

List特点

1有序
2可重复
3动态增长

ArrayList

ArrayList是基于数组实现的线性表,本质是动态修改数组
ArrayList objectName =new ArrayList<>(); // 初始化

常用方法

适用的场景

1 频繁的查询元素
2 只需要在列表末尾进行添加和删除元素 *** 作

ArrayList扩容机制


两种情况
1无参构造

ArrayList<String> list = new ArrayList<>();//无参的构造方法创建ArrayList对象

点进去分析代码

2指定初始容量的构造方法

ArrayList<String> list2 = new ArrayList<>(9);//设置大小以后的构造方法创建ArrayList对象


3使用add(T t)方法

LinkList

本质一种线性表,并不会按线性的顺序存储数据 而是在每一个节点里存到下一个节点的地址。
LinkedList list=new LinkedList();

常用方法

适用的场景

频繁的在列表开头、中间、末尾等位置进行添加和删除元素 *** 作。

Vector

Vector提供一个子类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

ArrayList和LinkList的区别

1 ArrayList封装的是一个数组,而LinkList是链表实现
2 ArrayList的时间复杂度是1,而LinkList是n.

Set集合接口

Set特点

内部不允许保存重复元素

HashSet

HashSet sites = new HashSet();//初始化
本质一个不允许有重复元素的集合,但是可以为一个NULL

常用方法

适用场景

需要使用集合保存一组对象时,同时要求对象不重复,并且对存取的速度快的场景

TreeSet

Set treeSet=new TreeSet();//初始化
本质使用升序去排序的集合,不允许放入null值

常用方法

适用场景

需要使用 SortedSet 中的 *** 作,或者按顺序迭代对你来说是重要的

重复元素消除

重复元素消除依靠的是两个方法
1 hash码:Public int hashCode();
2 对象比较:Public boolean equals(Object obj)
在进行对象比较的过程中,首先会使用hashCode()方法与集合中已经保存的代码进行匹配比较;如果代码相同则再使用equals()方法进行属性的依次比较;如果全部相同;则为相同元素;

什么时候适用List时候使用Set?

保存自定义类对象时优先使用List接口
保存系统类的信息的时候优先使用Set接口

Map集合接口

Iterator输出Map集合:

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 Sites = new HashMap();

常用方法

适用场景

只要是key-value结构的,一般我们就用HashMap

ConCurrentMap

ConcurrentHashMap是一个线程安全,并且是一个高效的HashMap。

ConCurrentMap的原理

当多个线程对公共数据访问时,采用ConcurrentMap,当需要对数据进行更新时,会对数据进行上锁,其他数据正常访问,实现线程安全,避免线程阻塞。

常用方法

适用场景

多线程情况下。

总结

collection是为了便于输出,而Map便于根据Key去寻找value。
开发中优先使用ArrayList(可重复)、HashSet(不可重复)、HashMap(key-value)。
如果觉得有帮助可以点赞收藏支持一下,如果能关注一下就再好不过了ヾ(≧▽≦*)o

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/941862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存