【java】Collection的子接口 List和Set的区别和使用

1.List接口常用的子类:ArraryList  LinkedList Vector;  

-----有序 可重复 可以有Null 有索引

2.Set接口常用的子类:HashSet  LinkedHashSet  TreeSet;   

-----无序、不可重复 没有索引,只能遍历查找,不允许添加重复的元素

3. 都是Collection的子接口 在其实现类里面都能用Collection的方法,List还有特有的新增方法,Set没有新增的方法,但是可以用list的方法

4.迭代:在Collection 中提供了一种对所有集合遍历的方法 封装在Iterator接口中。

 ArrayList :(查询用)

  • 频繁访问列表中的某一个元素。
  • 只需要在列表末尾进行添加和删除元素操作。
  • 查询效率高,增删效率低,线程不安全
  • 底层用数组来存储
  • 长度可以任意改变,可以保存任意数据类型

 LinkedList :(增加删除用)

  • 通过循环迭代来访问列表中的某些元素。
  • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
  • 特点:查询效率低,增删效率高,线程不安全。
  • 底层采用双向链表实现 采用的是链式存储结构,前驱节点和后继节点

Vector :(有线程需求的时候用)

  • 底层用数组存储
  • 和ArrayList可以互用,不同之处Vector是线程安全的,需要进行 线程同步检查,效率低
  • 特有的遍历方法
  • Enumeration el = vector.elements();
    //el.hasMoreElements() 查询是否有可输出的元素 返回布尔
    while (el.hasMoreElements()) {
    //nextElement() 取出对应的元素并将指针移动到下一个元素上
    System.out.println(el.nextElement());
    }

HashSet类

  • 底层用Hashmap实现
  • 查询和增改效率都挺高
  • 元素的存入是无序的
  • 保证元素唯一性

LinkedHashSet类

  • 底层采用的是链表 和哈希表组合的方法来存储数据的。
  • 按照存入的顺序来保存元素
  • LinkedHashSet和HashSet的用法一模一样。

TreeSet类

  • 底层实际是TreeMap实现的
  • 可以自定义元素的保存顺序
  • 通过key 来存储HashSet的元素,由于map 中的key 不能重复。所以TreeMap与生俱来有不可重复的能力。
  • 普通引用类型会重写Comparable接口内容,所以不需要使用者在去自定义排序规则。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值