集合的分类
集合List和Set都继承于Collection,都是单个储存元素的都是可以迭代的。
1. List
特点是是可重复、有序的,存入和迭代取出的次序相同。List的子类又有ArrayList、LinkedList、Vector。
ArrayList
底层采用数组结构存储,适合做查询笔试和频繁的增删,单线程操作效率高,随机增删效率低,多线程不安全。
初始10,按照1.5倍扩容
Vector
和ArrayList底层原理相同,但是使用sychorinized保证了多线程安全,效率低少使用。
初始10,按照2倍扩容
LinkedList
底层采用双向链表结构存储元素,增删效率高,随机查找效率低。不能通过数学表达式计算被查找元素的内存地址,每一次查找都是从头节点开始遍历,直到找到为止。所以LinkedList集合检索/查找的效率较低。
2. Set
特点是元素无序不可重复,不能按照index取值,适合做数据字典。
HashSet
底层是一个哈希表(散列表),实际是一个HashMap。
SortedSet
特点是存取无序且不可重复,但是存的元素可以自动按照大小排列。
TreeSet
继承于SortedSet,底层是一个二叉树TreeMap。
3. Map
双列集合Map,和Collection集合没有关系,Map集合以key-value的形式储存元素,key和value都是存储java对象的内存地址,所有Map集合的特点都是无序不可重复。Map和Set集合存储元素的特点相同。
HashMap
底层是哈希表,非线程安全,在JDK8后如果哈希表单向元素超过8个就编程红黑树结构,红黑树的节点数量小于6个又编程单项链表结构,为的是提交检索效率。
初始容量是16,按照2倍扩容。
HashTable
底层也是哈希表,用sychorinized是线程安全的,key和value不允许为null。
初始容量11,按照 原容量*2+1 方式扩容。
Properties
继承于HashTable,线程安全,key和value只能是String类型。
常用方法
1.Collection的常用方法
2.ArrayList的常用方法
3.Map的基本方法
参考:https://blog.csdn.net/zdl66/article/details/126251818