java集合(单链)

在最近接的项目中用到了很多集合的知识,发现许多知识都忘记了,看来需要恶补一下了,毕竟基础不牢,地动山摇。

  1. 数组和集合的区别

其实简单来说,数组和集合的最大区别就是集合的长度可变,数组长度不可变

  1. Collection集合(单链)

  1. List集合
  1. ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素。

原理:该集合添加元素时,首先判断自己长度是否够用,如果不够用就创建一个自身1.5倍的数组,再把原数组元素拷贝过来。数组的特点就是查询快,增加删除慢。

  1. LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素。

原理: LinkedList集合因为底层时链表实现的,链表的特点就是增加和删除比较快,查询慢。

  1. Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素。

原理:Vector和ArrayList集合的底层原理差不多,最大的区别就是线程是否安全。线程安全就像一扇带锁的门一样,你访问的时候要开锁,所以执行效率就比较低。

以上三个集合有一些公用的方法,我以ArrayList为例,话不多说直接上代码

其中有个重要的知识点,就是泛型的知识,泛型就是指定集合所存放元素的类型。按上例所示Double就是ArrayList的泛型。

如果查询多,增删少就用ArrayList集合

如果增删多,查询少就用LinkedList集合

如果都多就用ArrayList集合

  1. Set集合
  1. HashSet底层数据结构采用哈希表实现,元素无序且唯一,线程不安全,效率高,可以存储null元素,元素的唯一性是靠所存储元素类型是否重写hashCode()equals()方法来保证的。
  2. LinkedHashSet底层数据结构采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性。线程不安全,效率高。举了个例子来具体说明:
  3. TreeSet底层数据结构采用二叉树来实现,元素唯一且已经排好序;唯一性同样需要重写hashCodeequals()方法,二叉树结构保证了元素的有序性。

首先要解释一下compareto方法,它一个基于二叉树的排序方法:

然后再看个例题:

                     一般在开发的时候不需要对存储的元素排序,所以在开发的时候大多数用HashSetTreeSet在面试的时候比较多。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值