【Java 集合】Java 集合主要脉络 ( Collection | Map | List | Set )

举报
韩曙亮 发表于 2022/01/10 23:46:32 2022/01/10
【摘要】 文章目录 I 集合脉络II List 接口简介III Set 接口简介IV Map 接口简介V Collection 接口定义的方法 I 集合脉络 集合主...



I 集合脉络



集合主要脉络 : Java 集合大的分类为两类 CollectionMap , Collection 下有 List , Set , Queue 三个主要接口 ;

  • List 接口下实现的集合有 : ArrayList , Vector , Stack , LinkedList ;
  • Set 接口下实现的集合有 : HashSet , LinkedHashSet , TreeSet ;
  • Queue 接口下实现的集合有 : PriorityQueue , LinkedList , 该集合即实现了了 List 接口 , 又实现了 Queue 接口 ;
  • Map 接口下实现的集合有 : TreeMap , HashMap , LinkedHashMap , HashTable ;


II List 接口简介



List 接口 : List 集合特点 , ① 元素排列有序 , ② 元素可重复 ;

  • ① ArrayList : 底层由数组实现 , 查询速度快 , 增删速度较慢 , 线程不安全 , 效率比较高 ;
  • ② Vector : 底层由数组实现 , 查询速度快 , 增删速度较慢 , 线程安全 , 效率比较低 ;
  • ③ LinkedList : 底层由链表实现 , 查询速度较慢 , 增删速度很快 , 线程不安全 ;

Vector 与 ArrayList 的区别是线程是否安全 , Vector 以降低效率的代价换取线程安全 ;
ArrayList 与 LinkedList 底层实现不同 , 一个是数组实现的 , 一个是链表实现的 , 如果应用环境中查询比较多 , 使用 ArrayList , 如果应用环境中增删比较多使用 LinkedList ;



III Set 接口简介



1. Set 接口 : Set 集合特点是元素不可重复 ;

  • 1. HashSet : 依赖于 HashMap 实现 ;
    • ① 底层实现 : 底层由哈希表实现 ;
    • ② 元素排序 : 其元素排序是无序的 ;
    • ③ 元素重复验证 : 每次插入元素都会使用 hashCode 和 equals 方法验证是否与已有元素重复 ;
  • 2. TreeSet : 依赖于 TreeMap 实现 ;
    • ① 底层实现 : 底层由红黑树实现 ;
    • ② 元素排序 : 其元素通过比较器排序确定元素顺序 ;
    • ③ 元素重复验证 : 每次插入元素都会使用 equals 方法验证是否与已有元素重复 ;
  • 2. LinkedHashSet :
    • ① 底层实现 : 底层由链表和哈希表实现 ;
    • ② 元素排序 : 其元素排序是有序的 , 在插入时进行排序 ;
    • ③ 元素重复验证 : 每次插入元素都会使用 hashCode 方法验证是否与已有元素重复 ;

如果要求集合中的元素唯一 , 那么使用 Set 集合 , 如果不需要排序就使用 hashSet , 如果需要排序使用 TreeSet 或 LinkedHashSet ;

2. 三种集合的使用场景 : HashSet 用于存储不能重复的数据 , TreeSet 用于排序 , LinkedHashSet 有先进先出的功能 ;

3. 插入元素速度对比 : HashSet > LinkedHashSet > TreeSet ;

4. 关于元素的空值处理 : HashSet 和 LinkedHashSet 允许有空值 , TreeSet 如果出现空值就会抛出空指针异常 ;



IV Map 接口简介



1. Map 接口的集合实现 : HashMap ( 子类 LinkedHashMap ) , TreeMap , HashTable ;

2. 排序分析 : HashMap 和 HashTable 是无序的 , TreeMap 是有序的 ;

3. 线程安全 : HashMap 是线程不安全的 ; HashTable 是线程安全的 , 其方法都是 synchronized 修饰的 ; 因此 HashMap 效率要比 HashTable 效率要高 ;



V Collection 接口定义的方法



Collection 接口定义了集合的基本操作 , 如下 :

  • ① 添加删除 : 添加 , 删除 集合中的元素 ;
  • ② 获取 : 获取 迭代器 , 集合大小 , 哈希码 等 ;
  • ③ 判定类 : 包含判定 , 相等判定 , 空判定等操作 ;
  • 数组转换操作 ;

//I. 添加操作


//1. 添加单个元素
boolean add(E e)
//2. 将集合中的元素都添加到本集合中
boolean	addAll(Collection<? extends E> c) 


//II. 删除操作


//1. 删除单个元素
boolean	remove(Object o)
//2. 删除子集合 c 中的元素
boolean	removeAll(Collection<?> c) 
//3. 保留本集合中含有的集合 c 中的元素 , 其它元素删除 ( 保留两集合的交集 )
boolean	retainAll(Collection<?> c) 
//4. 清除所有元素
void clear() 


//III. 获取操作


//1. 获取迭代器
Iterator<E>	iterator() 
//2. 获取哈希码
int	hashCode()
//3. 获取集合大小 
int	size() 


//IV. 数组转换操作


//1. 返回包含该集合所有元素的数组
Object[] toArray() 
//2. 返回包含该集合所有元素的数组, 并指定数组元素类型
<T> T[]	toArray(T[] a) 


//V. 判定操作


//1. 是否包含某元素
boolean	contains(Object o)
//2. 是否包含某集合中的所有元素
boolean	containsAll(Collection<?> c)
//3. 是否相等
boolean	equals(Object o)
//4. 集合是否为空 , 如果为空返回 true
boolean	isEmpty()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/99762507

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。