第五篇2 容器的复习整理

集合框架

在这里插入图片描述

  • Collection接口存储一组不唯一 无序的对象

    所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现Iterator接口的对象

    • List接口存储一组不唯一有序的对象
      • arraylist实现了长度可变的数组 在内存中分配连续的空间 可以动态增长和缩减 底层是数组 类型object 可以存放空值 本质是elementData数组
      • linkedlist 链表存储方式 插入删除效率高 非线程安全的异步的 顺序存储结构双向链表 linkedList迭代器Listltr DescendingIterator
      • Vector 可增长的对象数组 和array List数组类似 加入了synchronized stack继承了vector
    • Set接口存储一组唯一无序的对象
      • hashSet的底层使用hashmap实现的 因此查询效率高
        • 用hashcode算法直接确定元素的内存地址,增删效率也挺高
      • TreeSet
  • map接口存储一组键值对对象 提供key value的映射

    • hashmap 底层是链表散列 数组和链表结合在一起使用

      • 内部有一个叫做entry的内部类 将kv保存在entry这个类所创建的对象中 ,通过key来算出他的hash值 k v hash Entry<k,v> next
      • 1.8之后桶中的数据有可能是链表有可能是红黑树 两个参数影响其性能 初始容量(table的个数)和加载因子(能够加载到多大的一种尺度)
      • hashmap中table数组一开始就已经是个没有长度的数组 构造方法没有初始化数组的大小 另一个也只是记录
      • 构造方法只做两件事情,一个是初始化加载因子,另一个是用threshold记录下数组初始化的大小。
      • 当插入一个元素的时候size就加1,若size大于threshold的时候,就会进行扩容。假设我们的capacity大小为32,loadFator为0.75,则threshold为24 = 32 * 0.75,
        在这里插入图片描述

collections工具类 提供了一些方法,该类不需要创建对象 内部提供的都是静态方法,集合对象不可变

  • reverse 反转
  • shuffle混排
  • sort 排序
  • swap 交换

1.5引入的新特性

  • List的get(int index)方法获取元素
  • Map的get(Object key)方法获取元素
  • Iterator的next()方法获取元素

hashcode和equals

批量的对象比较中,hashcode比较要比equals快,添加新元素时,先调用元素的hashcode方法,定位到他应该旋转的物理位置,若没有元素直接存储,若有元素调用equals方法与新元素作比较,相同则不存,不同则放在该位置的链表末端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值