文章目录

  • I 集合脉络
  • II List 接口简介
  • III Set 接口简介
  • IV Map 接口简介
  • V Collection 接口定义的方法

I 集合脉络


集合主要脉络 : Java 集合大的分类为两类 Collection 和 Map , 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()

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

  1. 【转】NHibernate集合映射中的set, list, map, bag, array

    NHibernate集合映射中的set, list, map, bag, array set, bag, list, map的语义 集合最重要的一点是集合的语义.Java JPA中对Set, List ...

  2. Java Review - 集合框架=Collection+Map

    文章目录 概述 容器 = Collection + Map Collection Set TreeSet HashSet LinkedHashSet List ArrayList Vector Lin ...

  3. Java—一篇读懂java集合(Collection/Map)及Lambda表达式

    集合简介   在集合类之前,我们使用数组存储,数组既可以存储基本数据类型的值,也可以存储对象(对象的引用变量),但是集合只能存储对象.   Java集合类似于一种容器,将同类型的对象(实际为对象引用) ...

  4. Java知识点04——集合(Set、List、Queue、Map、Collection和Iterator、Collections工具类)

    Java知识点04--集合(Set.List.Queue.Map.Collection.Iterator.Collections工具类) 一.集合 1.1 集合概述 二.Collection 2.1 ...

  5. Java中的集合(Collection,Map)

    集合类体系结构 Collection集合 Collection集合概述 是单例集合的顶层接口,它表示一组对象,这些对象也被成为Collection元素 JDK不提供此接口的任何直接实现,它提供更具体的 ...

  6. java 实现hashmap_Java集合(十)实现Map接口的HashMap

    Java集合(十)继承Map接口的HashMap 一.HashMap简介(基于JDK1.8) HashMap是基于哈希表(散列表),实现Map接口的双列集合,数据结构是"链表散列" ...

  7. Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin

    1.容器API的类图结构如下: JAVA的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,JAVA集合还可用于保存具有映射关系的关联数组 ...

  8. [Java复习02] 集合框架 Collection

    Q1 Collection java的集合以及集合之间的继承关系? 数组和链表的区别? 固定长度,连续内存,不能扩展,随机访问快,插入删除慢.链表相反 List, Set, Map的区别? List, ...

  9. 【腾讯面试题】Java集合:List、Set以及Map

    Java集合:List.Set以及Map 概述 Collection接口 List:有序,可重复 ArraysList Vector LinkedList Set:无序,唯一 HashSet Link ...

最新文章

  1. java经典模式:七种模式样例
  2. ThreadGroup分析
  3. 框架下cookie的使用_为什么自动化运维系统越来越多使用都RESTful API?
  4. OpenUDID 是否足够替代 UDID 使用?有何不同?
  5. C#7.0之ref locals and returns (局部变量和引用返回)
  6. Hue开发指南 - 提交 Spark 程序
  7. SPOJ Problem 22:Triangle From Centroid
  8. 计算机采用流水线目的是什么?
  9. 连接linux服务器工具
  10. http长连接与主动断开方
  11. android双卡切换,OPPOReno双卡双待怎么切换使用?
  12. 解锁小众网站 站在巨人的肩膀上
  13. excel宏 批量生成返回目录
  14. OceanBase架构浅析_OceanBase分布式数据库
  15. python perl lisp_C,C++,Lisp,Java,Perl,Python
  16. 免费图片外链网站收集整理,不再为贴图而发愁!!
  17. CVPR小样本检测:蒸馏上下文助力小样本检测(代码已开源)
  18. [CQOI2009]循环赛[HNOI2013]比赛
  19. Error type: LoadXML Description: Incorrect XML
  20. 中国柔性电子行业应用需求及发展前景展望报告(2022-2027年)

热门文章

  1. 微软发布 Mobile Express for Microsoft Dynamics CRM 4.0
  2. Docker部署ELK 日志归集
  3. JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )(转发)
  4. synchronized同步对象锁
  5. 关于年终奖励的扣税算法BUG
  6. 【原创】字符串工具类--找出单元字符串
  7. Oracle面试过程中常见的二十个问题
  8. 阿里云API网关(14)流控策略
  9. Hadoop2配置详解
  10. 12306订票候补是个坑_加30元就能抢到火车票?12306这个功能更靠谱!今起可买除夕火车票,抢票高峰来了...