集合

集合



Collection(一组允许重复的对象)

list(允许重复,维护元素插入顺序)有序可重复

  • list实现类:

    • ArrayList
    • LinkedList

set(重复元素不能加入)无序不重复

  • set实现类

    • HashSet
    • TreeSet
  • set不是真正的无序,只是集合中的排列顺序和插入顺序不一样,只有当内容和地址信息都相等时才会出现对象覆盖

Map:复制对象,与Collection没什么关系

list:有序队列,每个元素都有他的索引。第一个元素索引值是0,实现类还有Vector,Stack,一个是线程安全的ArrayList,一个是专门为了栈操作准备的,都不是不可替代的,不用他们都可以实现他们的效果,所以很少用

Set是一个不允许重复的集合

实现过程set和map是直接依赖相关的。

map是一个映射接口,AbstractMap是一个抽象类,HashMap,WeakHashMap,TreeMap都是AbstractMap的子类

Iterator接口是遍历集合的工具

Collection的实现类都要实现

Iterator()函数,返回一个Iterator对象

ListIterator专门为了遍历list存在的

接口方法:

Collection:add添加一个元素

addALL将指定集合中的所有元素添加目标集合中

contains判断集合中是否包含这个元素

toArray返回一个表示该集合的数组

重要实现类的细节

ArrayList

  • 动态数组,有一个默认初始容量(10),随着元素数量增加,每次添加会进行容量检查,如果快要溢出,将会进行扩容操作,将数组尺寸扩大为原来的1.5倍,所以在创建ArrayList时尽量预判一下容量尺寸,尽可能减少扩容操作带来的额外开销
  • ArrayList擅长随机访问,是非同步的

LinkedList

  • 双向链表
  • 多出了addFirst,removeLast这种方法。因为双向链表对首尾元素的操作效率更高,也是非同步的,

Vector

  • 就是一个线程安全的动态数组

Stack

  • 继承自Vector,实现了一个后进先出的栈,提供了一些额外方法来方便操作栈顶元素

HashSet

  • 可以存null,但只能存一个

  • 底层是一个HashMap

    • map中的key存set中的数据。
    • value存一个统一的object对象
  • 注意:HashSet虽然无序,但内部元素位置是固定的

  • HashSet判断元素是否重复要考equals和hashcode一起

TreeSet

  • 有序集合,底层是TreeMap,
  • 非线程安全
  • 支持自然排序和定制排序
  • 通过compareTo方法来比较元素是否相等

LInkedHashSet

  • 继承自HashSet,底层是LinkedHashMap
  • 根据元素的hashcode来决定元素真正的存储位置
  • 同时再使用一个链表为何原色的次序。
  • 遍历的时候看起来像是以插入顺序排布的,实际并不是

HashMap

  • 以哈希列表结构实现
  • 通过hash函数计算其位置
  • 内部定义了hash表数组,元素通过哈希转换函数将元素的哈希地址转换成数组中存放的索引,如果有冲突,使用散列链表的形式将所有相同哈希地址的元素串起来
  • java.util.map.Entry是一个单链表结构

TreeMap

  • 有序的k-v集合,底层是一个红黑树,存储时会进行排序,自然排序和定制排序,构造方法不同
  • 自然排序:key要实现Comparable接口
  • 定制排序:自己创建一个Comparator对象,可以对map中所有的key进行排序,不需要实现Comparable
  • 两个key通过comparaTo方法返回0,认为这两个key相等
  • 自己定义需要equals返回true,同时comparaTo方法返回0

Iterator接口详细内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值