集合

集合

集合的概念:
集合是一个用来存放对象的容器,可以是各种类型,也可自定义对象,并且不限制存放数量
集合只是存放的对象的引用,对象本身还是在堆内存中
集合的顶层:
iterator:迭代器是集合的顶层接口
集合中(除了map以外)Collection接口也是继承了iterable接口,而在iterable中封装了iterator接口

Collection:

List和set的父接口

  1. 数组是按位置索引排列,所以查询速度快,增删时,会改变索引值,所以增删效率低
  2. 链表是按照前后位置存放,查询时需要挨个查找,效率较低,增删时,只需要断开连接链,放入或者移除元素,重新连接即可,对其他元素无影响

List

  1. ArrayList:底层是数组结构,可以存储重复元素,有序,查询速度快,增删慢,线程不安全,效率高

  2. Veactor:底层数组结构,可以存储重复元素,有序,查询速度快,增删慢,线程安全,效率低–几乎被淘汰

  3. LinkedList:底层是链表结构,可以存储重复元素,有序,查询速度慢,增删快,线程不安全,效率高

遍历集合

  1. 使用迭代器 hasNext next() 方法获取
  2. 使用for循环获取集合中元素

Set

  1. hashSet:底层是数组结构,元素无序,不可重复

  2. 底层使用了hash算法,在存储元素时,会先调用hashcode方法计算出hash值,然后存储到对应的位置,如果hash值相同,则会equals对象,对象相同时,认为已经存在,不会放入集合中

  3. 查询时,index = hash(value) 根据计算出的索引查询,所以查询效率高LinkedHashSet:底层结构:链表+hash
    查询速度快,元素有序(添加顺序),不可重复

  4. TreeSet:底层结构:数组+红黑树

  5. 自然顺序(排序算法:数字、中文)不可重复

  6. 适合做范围查询

Map (key-value存储形式,key唯一,value可以重复)

  1. hashtable:类似hashMap,线程安全,但效率低
  2. hashMap:不是添加顺序,查询较快
  3. LinkedHashMap:链表+hash算法,按照添加顺序排序
  4. TreeMap:红黑树存储结构,自然排序或添加顺序
  1. map的key就是由Set组成
  2. 在jdk1.8中,hashMap的数据结构为:数组+链表+红黑树 如果链表的长度大于8,则存储结构变为红黑树
  3. 如果红黑树中元素太少,也会被修剪或者还原为链表结构
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值