java中集合接口list、set,以及实现类的特点

List接口:存放元素有序、可重复。

这里的有序指的是集合中存放元素的顺序与添加元素的顺序一致,并且自带索引

ArrayList类:底层结构是数组结构,查询元素的效率比较高,增删元素的效率比较低。线程不安全,效率高。

LinkedList类:底层结构是链表结构,查询元素的效率比较低,增删元素的效率比较高。了解链表结构

Vector类:底层结构是数组结构,查询元素的效率比较高,增删元素的效率比较低。线程安全,效率低。

 

Set接口:存放元素无序、不可重复。

这里的无序指的是集合中存放元素的顺序与添加元素的顺序无关,不带索引,但集合中存放元素的顺序不是杂乱无章,是按照hashcode来排序的

HashSet类:底层结构为哈希表,向HashSet添加元素E时,系统会先比较E和已有元素的hashCode()的返回值,如果不相同,则认为两个元素不相同;如果相同,则再调用equals(),如果返回false,则认为两个元素不相同,如果返回true,则认为两个元素相同,E和已有元素挨个按照这种规则比较,如果都不相同,则可以添加E。元素允许为null

TreeSet类: 底层结构为二叉树,TreeSet中添加的元素类型要一致,且具备可比性

可比性:

1.自然排序。待排序的类可以修改时,让本没有可比性的这个类实现Comparable接口,重写compareTo(Object o)方法,使其具备可比性,归根结底是比较该类中具有可比性的属性。(待排序的类自带比较规则)
2.定制排序。待排序的类无法修改时,额外创建一个实现Comparator接口的类,重写compare(Object o1, Object o2)方法,其对象用作某些方法的参数。(额外制定比较规则)
       

Java中TreeSet 的遍历采用的是二叉树的中序遍历:左子树—-根节点—-右子树

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值