虽然微不足道但是很有用的JAVA基础——集合简介

本文详细介绍了Java集合框架中的List、Set、Map三种主要类型。包括它们的不同实现方式及其特点,如ArrayList、LinkedList、HashSet、TreeSet等,并分析了每种类型的适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合分为List,set,map 三种,但是只有List和set 是继承了 Collection ,map 则提供从key到value的映射,并且key不能重复,value则可以。

1.List 分为ArrayList 和 LinkedList 以及 Vector

ArrayList:底层的实现方式为 动态数组 因为是按顺序存放,所以查询和修改数据较快

但是也因为在内存中连续,所以* 增加和删除较慢*,最差的情况就是要删除的是第一个元素,需要把所有数据全部移动。

LinkedList : 底层的实现方式为 链表 ,所以数据在内存中的地址是随机的,增加和删除较快,只需要找到这个元素就可以修改删除而不像Arrlylist 需要生成新的数组以转移数据。

针对数据的查询和更改,因为查询某个元素就需要前一个元素存放在尾部的地址,所以最差的情况就是要查询或更改的元素在最后,需要查询一遍所有的元素,所以查询和更改的效率不高

Vector 由于Vector采用了线程安全,即某一时刻只能有一个线程来对Vector进行读写,所以相对效率不高。

**List特点:**List是有序,可重复的。

2.Set 分为HashSet 和 linkedHashSet 以及TreeSet

HashSet: 底层是由HashMap实现的,通过HashSet查询元素,先通过计算HashCode来找到对应的区域,在区域内使用equals()进行元素对比,查找的效率相对较快,但也因为是通过HashCode来存储数据,所以HashSet不会有重复的值。

LinkedHashSet: 具备HashSet快速查询的特性,因为是使用了链表来存储元素,所以在迭代集合时是按元素插入顺序输出的(增删性能不如HashSet)。

TreeSet:TreeSet是SortedSet接口的唯一实现类,底层的实现方式是基于TreeMap的二叉树结构,可以通过TreeSet来获取有序的Set,TreeSet有两种排序方式,自然排序 和 定制排序

Set特点:Set是无序不可重复的。

3.Map 分为HashMap LinkedHashMap 以及 HashTable

HashMap 通过HashCode存放数据,所以无序(HashMap不保证映射顺序,更不保证该顺序恒久不变)。

LinkedHashMap 与HashMap不同的是, linkedHashMap 通过一个双线的链表来维护HashMap。而该链表定义了迭代顺序,这个迭代的顺序一般是插入顺序。

HashTable :与HashMap的区别是HashMap允许使用null值以及非同步。

Map的特点:元素按(key,value)存储,无序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值