java集合
Posted hdljdylzsx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java集合相关的知识,希望对你有一定的参考价值。
参考: 杨洛平 https://www.cnblogs.com/yangliguo/p/7476788.html
简单整理
List:有序可重复
ArrayList 基于数组
查询效率高,增删改效率低。
LinkedList 基于链表
查询效率低,增删改效率高。
如果操作的index如果大于LinkedList长度的二分之一时是从后往前找(一个优化,LinkedList的两个指针,一个在first,一个在last)
Set:无序不重复
HashSet
基于HashMap;key是HashSet的值,value都是 private static final Object PRESENT = new Object();
是可以存null的;
LinkedHashSet
有序,顺序为存入数据的顺序;
是可以存null的;
TreeSet
基于TreeMap;key是HashSet的值,value都是 private static final Object PRESENT = new Object();
是根据元素的自然顺序排序,也可以根据创建set时提供的Comparator进行排序
Map:键值对的形式存储数据(键唯一,值不唯一)
HashMap
默认容量、负载因子分别是16和0.75。
非线程安全;
键和值都可以为null;
效率高;
LinkedHashMap
有序的HashMap,顺序为数据存入的先后顺序
键和值都可以为null;
ConcurrentHashMap
线程安全
效率比HashTable高,因为采用的是分段锁的机制
键和值都不能为null;这里有比较合理的解释(https://blog.csdn.net/gagewang1/article/details/54971965)
HashTable
线程安全;
键和值都不能为null;这里有比较合理的解释(https://blog.csdn.net/gagewang1/article/details/54971965)
效率低;
TreeMap
基于红黑树的NavigableMap实现的
非线程安全
键不能为null,值可以为null;
根据元素的自然顺序进行排序。
以上是关于java集合的主要内容,如果未能解决你的问题,请参考以下文章