主要集合类和主要映射类总结

主要集合类型、映射的梳理

在这里插入图片描述
List

  1. ArrayList:
    继承自 AbstractList,实现了 List 接口,保证存入顺序(存入时是什么顺序,就是什么顺序),可以存储重复元素,可以通过下标操作。
    底层基于数组实现,默认初始容量为10。扩容是由底层数组的位运算完成,在原数组的基础上增加一半(新数组长度=旧数组长度>>1+旧数组长度)。查询效率高,增删效率慢。线程不安全。
  2. LinkedList:
    继承了AbstractSequentialList,实现了List接口,保证存入顺序(存入时是什么顺序,就是什么顺序),可以存储重复元素,可以通过下标操作。
    底层基于双向链表(节点)实现,不需要扩容。查询效率慢,增删效率高。线程不安全。
  3. Vector:
    最早的集合类。继承了AbstractList,实现了List接口。保证存入顺序(存入时是什么顺序,就是什么顺序),可以存储重复元素,可以通过下标操作。
    底层基于数组实现,默认初始容量为10,默认扩容一倍。效率不如ArrayList,但线程安全。

Set

  1. HashSet:
    继承了AbstractSet,实现了Set接口。不保证存放顺序及迭代顺序(整体来讲没有顺序可言,但如果集合中存储的单一的字母或数字,那么默认会进行升序排序)。不能存储重复元素。
    HashSet底层基于HashMap实现(HashSet的构造方法是直接实例化的HashMap的对象,HashSet基于HashMap,HashMap底层基于数组+链表)。默认初始容量为16,加载因子为0.75,默认扩容一倍。(都是HashMap的特性)
  2. LinkedHashSet:
    继承了HashSet,实现了Set接口。保证存放顺序及迭代顺序。不能存储重复元素。
    底层基于HashSet实现(LinkedHashSet的构造方法直接调的父类的构造方法),拥有HashSet的特点(除了顺序)。
  3. TreeSet:
    继承了AbstractSet,实现了NavigableSet接口(Set->SortedSet->NavigableSet)。默认会进行自然升序排序。如果一个类实现Comparable接口并重写了compareTo方法(指定排序规则),这个类产生的对象的属性就可以被默认排序

Map

  1. HashMap:
    继承了AbstractMap,实现了Map接口,不保证存放顺序,Key值不能重复,允许Null键Null值。
    底层基于数组+链表实现。默认初始容量为16,加载因子为0.75,默认扩容是在原来的基础上增加一倍。异步式线程不安全
    在这里插入图片描述
  2. HashTable:
    继承自Dictionary类,实现了Map接口。不保证存放顺序,Key值不能重复,不允许Null键Null值。
    HashTable实现几乎与HashMap一样。默认初始容量为11,加载因子为0.75,默认扩容是在原来的基础上增加一倍再加一。同步式线程安全
  3. LinkedHashMap:
    继承自HashMap,构造方法调用的是父类构造,几乎具有HashMap的全部特点。但是保证了存储顺序
    在这里插入图片描述
    有什么问题请帮忙指出!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值