Java集合总结---Collection接口

Collection接口

子接口有List接口和Set接口,List接口的主要实现类有ArrayList、LinkedList、Vector;Set接口主要实现类有HashSet、LinkedHashSet、TreeSet
List接口的特点:存储的数据有序,可重复==>“动态数组”

  1. ArrayList:底层代码数组实现,线程不安全,效率高,查询快
  2. LinkedList:底层使用双向链表实现,插入删除比ArrayList快
  3. Vector:古老的List实现类,底层代码数组实现,线程安全,效率低

Set接口的特点:存储的数据无序,不可重复(无序性不是指数据存入时随机存储位置,以HashSet为例,存储的数据不时按照底层数组的索引插入,而是以哈希值根据算法算出的索引位插入)

  • HashSet:作为Set的主要实现类,线程不安全,可以存储null值,
  • LinkedHashSet:作为HashSet的子类,遍历当中数据时可以按照插入的顺序输出
  • TreeSet:要求当中插入的数据要为同一类,可以按照类中的制定属性进行排序

HashSet中插入的类需要重写equals方法和重写hashcode,因为HashSet实现不可重复性对比插入对象是否一致现比较hashcode值是否一致,一致再调用equals方法比较,如果equals方法返回true则不插入,返回false则再该索引值上创建一个链表与索引值相连。
LinkedHashSet在插入数据时还维护了两个引用,用来记录前一个数据和后一个数据,优点:对于频繁的遍历操作比HashSet高

TreeSet排序两种方式:①插入的类实现Compareable接口,自然排序②在创建TreeSet时传入Comparator的匿名实现类对象,在匿名实现类中重写compare()方法,实现排序
!!!TreeSet当中比较插入的对象是否相等就是依据排序方法(Compare和CompareTo)的返回值,返回0就认为一致,不插入,而不是和HashSet一样根据equals()方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值