Java 集合体系结构(List、Set、Collection、Map 的区别和联系)

虚线的框框是接口实现框框是类箭头指向谁就实现谁或者继承谁 sorted表示排序了的  abstract表示抽象了的   Comparator比较器的接口(@FunctionalInterface)   Iterator迭代器   Stack栈

 

AbstractMap是Java中的一个抽象类,它实现了Map接口的一部分方法,提供了一些通用的功能和默认实现,可以作为其他具体Map实现类的基类。

AbstractMap的作用如下:

1. 提供了默认实现:AbstractMap实现了Map接口的大部分方法,包括put、get、remove等操作,以及size、isEmpty、containsKey等查询操作这些方法的默认实现可以被具体的子类直接继承和使用,减少了子类实现的工作量。

2. 支持键值对的迭代:AbstractMap提供了entrySet方法,返回一个包含键值对的Set集合。通过遍历这个集合,可以方便地对Map中的键值对进行迭代操作。

3. 支持键的集合和值的集合:AbstractMap提供了keySet和values方法,分别返回一个包含所有键的Set集合和一个包含所有值的Collection集合。这些方法可以方便地获取Map中的键和值,进行遍历、查找等操作。

4. 支持自定义具体Map实现:AbstractMap作为一个抽象类,为自定义具体的Map实现类提供了一个基础框架。通过继承AbstractMap并实现其中的抽象方法,可以快速地创建自定义的Map实现类。

总之,AbstractMap提供了一些通用的功能和默认实现,简化了具体Map实现类的开发,并提供了对键值对的迭代、键的集合和值的集合的支持。

=========================================================================

WeakHashMap是Java中的一种特殊的Map实现类,它的作用是提供一种弱引用的键值对存储方式。(强引用可以阻止对象被垃圾回收,而弱引用不会阻止对象被垃圾回收。

WeakHashMap的特点如下:

1. 弱引用的键:WeakHashMap中的键是使用弱引用来持有的。弱引用是一种比较弱的引用类型,在垃圾回收时,如果一个对象只被弱引用持有,并且没有其他强引用指向它,那么这个对象就会被垃圾回收器回收。因此,当一个键对象被回收时,对应的键值对会自动从WeakHashMap中移除。

2. 强引用的值:WeakHashMap中的值是使用强引用来持有的。这意味着只要值对象有强引用指向它,即使对应的键对象被回收了,值对象仍然不会被回收。

3. 适用于缓存和临时映射:WeakHashMap适用于一些临时性的映射关系,例如缓存。当键对象不再被其他部分引用时,WeakHashMap会自动清理对应的键值对,避免内存泄漏。

4. 非线程安全:WeakHashMap不是线程安全的,如果需要在多线程环境下使用,需要进行外部同步。

总之,WeakHashMap提供了一种弱引用的键值对存储方式,适用于缓存和临时映射等场景,可以自动清理不再被引用的键值对,避免内存泄漏。

1、Collection 接口存储一组不唯一,无序的对象  单例
2、List 接口存储一组不唯一,有序(插入顺序)的对象
3、Set 接口存储一组唯一,无序的对象
4、Map 接口存储一组键值对象,提供 key 到 value 的映射。Key 无序,唯一。value 不要求有序,允许重复。(如果只使用 key 存储,而不使用value,那就是 Set)  双列

Collection 单列集合

list 有序可重复

Vector 数组结构 线程安全

Arraylist 数组结构 非线程安全

linkedlist 链表结构 非线程安全

set 无序 唯一

HashSet 哈希表结构 ---> LinkedHashSet 哈希表和链表的结构 哈希表底层是数组

TreeSet 红黑数结构

Map双列集合

Hashtable 哈希表结构 线程安全 ----> Properties

HashMap 哈希表结构 非线程安全 ----> linkedHashMap 哈希表和链表结构

ConcurrentHashMap 哈希表结构 线程安全

TreeMap 红黑树结构

1. Collection接口:Collection是集合体系结构的根接口,它代表一组对象的集合。它包括了常见的操作,如添加、删除、查询、遍历等。它的两个主要子接口是List和Set。

2. List接口:List是有序的集合,它可以包含重复的元素。它通过索引来访问元素,可以根据索引进行添加、删除和修改操作。常见的实现类有ArrayList和LinkedList等

3. Set接口:Set是不允许重复元素的集合,保证集合中的元素是唯一的它不提供索引访问方式,只提供了添加、删除和查询操作。常见的实现类有HashSet和TreeSet等。

4. Map接口:Map是一种键值对存储结构的集合,每个元素都包含一个键和一个值,并且键是唯一的。它通过键来访问值,提供了根据键增删改查的操作。常见的实现类有HashMap和TreeMap等。

联系:
- List、Set和Map都是继承自Collection接口,因此它们都具备集合的基本操作和特性。
- List和Set都是用来存储对象的集合,区别在于List可以有重复元素,而Set不允许重复元素。
- Map是键值对存储结构,可根据键来快速查找值。键唯一

区别:
- List是有序集合,可以根据索引访问元素;Set是无序集合,不支持索引访问。
- List可以包含重复元素;Set不允许重复元素。
- Map是键值对的集合,每个元素由键和值组成;List和Set是单元素集合。

1. List(列表)是有序的集合,它允许重复的元素。常用的实现类有ArrayList、LinkedList和Vector。列表允许按索引访问元素并提供了一系列操作元素的方法(如增加、删除、替换等)。

2. Set(集)是无序的集合,不允许重复的元素。常用的实现类有HashSet、LinkedHashSet和TreeSet。集通常用于去除重复元素和判断元素是否存在它提供了用于添加、删除和检查元素的方法。

3. Collection(集合)是List和Set的根接口,它定义了集合的基本操作和属性。它是集合体系结构的顶层接口,用于表示一组对象,不关心集合内元素的具体顺序或是否重复。

4. Map(映射)是键值对的集合,每个键都是唯一的。常用的实现类有HashMap、LinkedHashMap和TreeMap。Map允许通过键来访问元素,并提供了根据键增加、删除、修改元素的方法。

联系和区别:
- List、Set和Map都属于Java集合体系结构的一部分,它们都用于存储和操作数据。
- List和Set都继承自Collection接口,而Map则是单独的接口
- List是有序集合,允许重复元素;Set是无序集合,不允许重复元素;而Map是键值对的映射集合。
- List和Set都提供了添加、删除、获取和修改元素的方法,而Map则提供了根据键来操作元素的方法。
- List通过索引访问元素;Set和Map通过键或迭代器来访问元素。
- List允许元素重复,具有顺序性;Set不允许元素重复,无序;Map的键是唯一的,值可以重复。
- List和Set都有多种实现类,根据不同的需求和场景选择合适的实现类。
- List、Set和Map在使用时需要根据实际需求选择合适的数据结构和算法,以提高性能和满足需求。

1. List(列表)就像队伍中的人,他们按照顺序排列。每个人可以重复出现,你可以通过他们的位置(索引)来找到特定的人,并在需要时添加或删除人。

2. Set(集)则类似于一群独立的朋友。他们没有明确的顺序,每个人只出现一次。你可以轻松地检查是否已经有一个朋友参加了聚会,并向这个朋友发送邀请或删除他。

3. Collection(集合)就像放在一个篮子里的不同种类的水果。它不关心水果的顺序,也不关心它们是否重复。你可以添加、删除或查找某种水果,而不用在意其他水果。

4. Map(映射)类似于你的通讯录,其中每个联系人都与一个唯一的姓名键相关联。你可以根据姓名键找到特定的联系人,并在需要时更新他们的信息。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值