集合

一、connection 接口:

1. List 有序,可重复

ArrayList :
  • ‘ArrayList 集合初始化容量是 10;底层是 Object类型的数组;扩容为原容量的 1.5 倍;建议给定一个预估的初始化容量,减少扩容次数

  • 优点:底层数据结构是数组,查询快,增删慢

  • 缺点:随机增删元素效率较低(向末尾加元素的话效率还是很高的)

    LinkedList:
  • 底层采用了双向链表的数据结构;随机增删效率较高,检索效率较低

  • 链表中的元素在空间存储上是不连续的

    Vector
  • 底层采用了数组这种数据结构,它是线程安全的( Vector 中所有的方法都有 synchronized 关键字修饰)

2. Set 无序(存进去与取出来的顺序不一致),唯一

HashSet:
  • 其中存储的元素是无序的,主要是因为它是靠对象的哈希值来确定元素在集合中的位置的
  • 其中的元素是不可重复的,主要是靠对象的 hashCode 和 equals 方法来判断对象是否重复的
  • 实际上 HashSet 集合在 new 的时候,底层实际上是 new 了一个 HashMap 集合,向 HashSet 集合中存储元素,实际上是存储到了HashMap集合中的 key 中了。
  • HashMap 集合是一个哈希表数据结构
  • HashSet 集合初始化容量是 16 ,扩容之后是原容量的 2 倍
TreeSet:可排序集合
  • TreeSet 集合底层实际上是 TreeMap 在 new TreeSet 集合的时候,底层实际上是 new 了一个 TreeMap 集合,往 TreeSet 集合中放数据的时候,实际上是将数据放到了 TreeMap 集合中的 key 中了

  • TreeMap 集合底层采用了二叉树的数据结构

  • 存储的元素可以自动按照大小顺序自动排序

    如果一个类,实现了 java.lang.Comparable 接口,那么这个类的俩个对象就是可以比较大小的。

二、Map 接口:key 与 value

HashMap:不同步的
  • HashMap 集合底层是哈希表数据结构,是非线程安全的
  • 在 JDK8 之后,如果哈希表单向链表中元素超过 8 个,单向链表这种数据结构就会变成红黑树数据结构。当红黑树上的节点数量小于 6 时,会重新把红黑树变成单向链表数据结构。这种方式是为了提高检索效率
  • 初始化容量为 16,默认加载因子是 0.75
  • HashMap 集合中的 key 与 value 允许为 null
TreeMap:
  • 它可以对key值进 行排序,同时构造器也可以接收一个比较器对象作为参数。支持key值的自然排序和比较器排序俩种方 式。(支持key排序)
HashTable: 同步的
  • HashTable 集合的层也是哈希表数据结构,是线程安全的,其中所有的方法都带有 synchronized 关键字,效率低
  • HashTable 的 key 和 value 不允许为 null;
  • 初始化容量为 11
  • 集合扩容是:原容量的 2 倍+1

未完待续。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值