---|Collection: 单列集合,定义了最常规的操作方法
---|List: 有存储顺序, 可重复
---|ArrayList: 数组实现, 查找快, 增删慢
---|LinkedList: 链表实现, 增删快, 查找慢实现了栈 队列
---|Vector: 和ArrayList原理相同, 但线程安全, 效率略低
---| Stack 类
---|Set: 无存储顺序, 不可重复
---|HashSet 线程不安全,存取速度快。底层是以哈希表实现的
---|TreeSet 红-黑树的数据结构,默认对元素进行自然排序(String)。如果在比较的时候两个对象返回值为0,,那么元素重复。 Comparable,Comparator。
---|LinkedHashSet
---| Map: 键值对
---|HashMap 采用哈希表实现,所以无序
---|TreeMap 可以对键值进行排序
---|HashTable 线程同步
---|LinkedHashMap 对Map集合进行增删提高效率
Collection 定义了最基本的操作方法:
1、增加(add/addAll)
2、删除(remove/removeAll/clear/retainAll)
3、查询(contain/containAll/iterator/size/isEmpty
4、转数组(toArray/toArray(T[]))
AbstractCollection Collection的一个实现类,实现了Collection的方法,
https://www.cnblogs.com/android-blogs/p/5566212.html
其中,比较有趣的地方:
privatestaticfinalintMAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
-8是因为数组对象的头部会占用这8个字节
List
List接口相对Collection扩展了几个方法:
indexOf(),lastIndexOf(),subList(),set()
AbstractList
public abstract class AbstractList extends AbstractCollection implements List
继承自AbstractCollectio 实现了 List的接口
其中
checkForComodification 用于检测列表是否在其它线程被修改
final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
ArrayList
详细介绍: https://www.cnblogs.com/xujian2014/p/4625346.html
Set
AbstractSet 继承了AbstractCollection实现了Set接口
AbstractSet的Hash值是所有元素的hash值的总和
Java中的Hash原理:取数据内容的每个char值按照一个算法做运算得到的值,例如String的hash算法就比较简单:
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
HashSet
HashSet不能添加重复的元素,当调用add(Object)方法时候,
首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素;
如果已存在则调用Object对象的equals方法判断是否返回true,如果为true则说明元素已经存在,如为false则插入元素。
HashSet底层数据实现用HashMap,那每次插入的数据其实只放在haspmap的key当中,而hashmap存的value都固定为一个空置Object
// PRESENT是向map中插入key-value对应的value 13
// 因为HashSet中只需要用到key,而HashMap是key-value键值对; 14
// 所以,向map中添加键值对时,键值对的值固定是PRESENT 15
private static final Object PRESENT =new Object();
http://www.cnblogs.com/skywang12345/p/3311252.html
Map
更完整的解析
https://blog.csdn.net/panweiwei1994/article/details/77185902