Java基础知识点总结系列(十)——集合及其常用方法_java集合总结(1)

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

以数组形式进行存储的List,因为以数组形式存储,所以其查询元素的空间复杂度为O(1),但在插入和删除时,需要将其他所有元素依次进行平移。ArrayList不支持同步,再多线程场景下使用ArrayList必须自己做同步。

1.2 LinkedList

以链表形式对数据进行存储,其插入和删除的时间复杂度为O(1),因为只需要修改前后元素指向即可,但LinkedList查找效率相对较低,最坏情况下需要遍历整个LinkedList,所以其时间复杂度为O(1)。LinkedList也不支持同步,多线程操作时也需要和ArrayList一样单独做同步,同时LinkedList还支持在头部插入删除以及在尾部插入删除,所以可以通过链表实现堆栈和队列。

2. Set接口

Set是一种不包含重复元素的接口,其内部是无序的(当然从hashcode的角度来看可是看做是有序的),元素值可以为null(因为元素不能重复,所以null最多只有一个);

2.3 HashSet

HashSet其实就是一种不允许重复的集合,因为HashMap不允许key重复,HashSet本质上就是一个HashMap的key集合,对应的value为一个new出来的Object,实际上,HashSet并不关心value,他需要的就是利用HashMapkey不重复的特点实现元素不重复。这样就实现了一种元素不重复的集合。其内部的add()/remove()方法都是直接调用的HashMap中的方法。

private transient HashMap<E,Object> map;

// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();

/\*\*
 \* Constructs a new, empty set; the backing {@code HashMap} instance has
 \* default initial capacity (16) and load factor (0.75).
 \*/
public HashSet() {
   map = new HashMap<>();
 }

2.3.1 LinkedHashSet

LinkedHashSet继承自HashSet, 相比于HashSet,其元素之间存在一个顺序,类似于HashSet内部是基于HashMap存储和操作数据,LinkedHashSet内部是基于LinkedHashMa存储和操作数据。

2.4 TreeSet
//继承关系
public class TreeSet<E> extends AbstractSet<E>
    implements NavigableSet<E>, Cloneable, java.io.Serializable{
 }

TreeSet是一个树形集合,继承自AbstractSet,,同时实现了NavigableSet接口

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

视频,并且后续会持续更新**

如果你需要这些资料,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值