当前位置: 首页 > 后端技术 > Java

Java集合(单链)

时间:2023-04-01 22:15:48 Java

在最近的项目中使用了很多集合知识,发现忘记了很多知识。看来我需要弥补一下了。毕竟地基不牢,地动山摇。\(数组和集合的区别\)其实简单来说,数组和集合最大的区别就是集合的长度是可变的,而数组的长度是不可变的。Collection集合(单链)List集合ArrayList:底层数据结构为数组,查询速度快。增删慢,线程不安全,效率高,可以存重复元素。原理:在向集合中添加元素时,首先判断其长度是否足够,如果不够,则创建一个1.5倍自身大小的数组,然后将原数组的元素复制过来。数组的特点是查询快,增删慢。LinkedList底层数据结构是链表,查询慢,增删快,非线程安全,效率高,可以存储重复元素。原理:LinkedList集合的实现是因为底层有链表。链表的特点是增删快,查询慢。Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素。原理:Vector和ArrayList集合的底层原理是相似的,最大的区别就是线程是否安全。线程安全就像一扇锁着的门。访问的时候需要解锁,执行效率比较低。以上三个集合都有一些共同的方法。我将以ArrayList为例。废话不多说,代码中有一个重要的知识点,就是泛型的知识点。泛型是存储在指定集合中的元素类型。如上例所示,Double是ArrayList的泛型。如果查询多,增删改查少,就用ArrayList集合。如果有很多增删改查,就用LinkedList集合。如果查询较多,使用ArrayList集合Set集合HashSet。high,可以存储null元素,通过存储的元素类型是否覆盖hashCode()和equals()方法来保证元素的唯一性。LinkedHashSet的底层数据结构是由链表和哈希表共同实现的。链表保证元素的顺序与存储顺序一致,哈希表保证元素的唯一性。线程不安全,效率高。举例说明:TreeSet底层数据结构使用二叉树实现,元素唯一且有序;唯一性也需要重写hashCode和equals()方法,二叉树结构保证了元素的顺序。首先需要解释一下compareto方法,它是一种基于二叉树的排序方法:然后看一道例题:一般开发时不需要对存储的元素进行排序,所以大多使用HashSet在开发期间,TreeSet在采访期间进行比较。许多。