集合知识点

集合的特点:

        集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。

        集合非常适合做元素的增删操作。

        注意:集合中只能存储引用类型数据,如果要存储基本类型数据可以选择包装类。

集合适合的场景:数据的个数不确定,需要进行增删元素的时候。

集合都是支持泛型的,可以在编译阶段约束集合只能操作某种数据类型

ArrayList集合底层原理:

        ArrayList底层是基于数组实现的:根据索引定位元素快,增删需要做元素的移位操作。

        第一次创建集合并添加一个元素的时候,在底层创建一个默认长度为10的数组

LinkedList的特点:

        底层数据结构是双链表,查询慢,首尾操作的速度是极快的,所以多了很多首尾操作的特有API。

推荐使用迭代器删除元素,方法:iterator.remove();

Set系列集合特点

        无序:存取顺序不一致

        不重复:可以去除重复

        无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素

Set集合实现类特点:

        HashSet:无序、不重复、无索引。

        LinkedHashSet:有序、不重复、无索引。

        TreeSet:排序、不重复、无索引。

Set集合的底层原理是什么?

        JDK8之前,哈希表:底层使用数组+链表组成

        JDK8开始后,哈希表:底层采用数组+链表+红黑树组成

TreeSet集合存储对象的时候有两种方式设计自定义比较规则

        让自定义的类 实现Comparable接口,重写里面的compareTo方法来定制比较规则。

        TreeSet集合有参数构造器,可以设置Comparator接口对应的比较器对象,来定制比较规则。

        注意:如果TreeSet集合存储的对象有实现比较规则,集合也自带比较器,默认使用集合自带的比较器排序

如果希望元素可以重复,又有索引,索引查询要快?

        使用ArrayList集合,基于数组的(用的最多)。

如果希望元素可以重复,又有索引,增删首尾操作快?

        用LinkedList集合,基于链表的。

如果希望增删改查都快,但是元素不重复、无序、无索引

        用HashSet集合,基于哈希表的。

如果希望增删改查都快,但是元素不重复、有序、无索引

        用LinkedHashSet集合,基于哈希表和双链表

如果要对对象进行排序

        用TreeSet集合,基于红黑树。后续也可以用List集合实现排序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值