标签:循环 lin shc efault pac vat stat 比较 equal
List:列表,有序.
Set:不允许重复的集合.
Map:key,value键值对,key不能重复
Arraylist 与 LinkedList 区别?
Arraylist -> private static final Object[] EMPTY_ELEMENTDATA = {}即Object数组;
LinkedList -> 双向链表
Arraylist -> 默认add()直接再list尾部添加,时间复杂度O(1),但是在指定位置i添加,时间复杂度为O(n-i),因为添加后n-i的元素都要向前或向后移动一位.
LinkedList -> 默认add()插入删除的时间复杂度近似O(1),在指定i位置添加删除的时间复杂度为O(n),因为要先移动到i位置处.
Arraylist -> 支持随机访问 get(index)
LinkedList 不支持
Arraylist -> 主要浪费体现在list末尾会预留空间.
LinkedList -> 主要浪费在他的每一个元素都比Arraylist的元素大,因为他的元素还要存储前驱后继以及数据.
Arraylist实现了此接口,所以它支持随机访问
List遍历:
1. 实现了 RandomAccess 接口,优先for循环,其次foreach.
2. 未实现 RandomAccess 接口,优先iterator,其次foreach.
Arraylist扩容机制?
1. 初始大小为10
private static final int DEFAULT_CAPACITY = 10;
2. 默认1.5倍扩容
int newCapacity = oldCapacity + (oldCapacity >> 1);
HashMap 和 Hashtable 的区别?
Hashtable 初始容量为11,每次扩容变为2n+1.
HashMap 初始容量为16,每次扩容变为2n.
Hashtable -> 数组+链表;
HashMap -> 数组+链表(1.8以前),数组+链表+红黑树(1.8),当链表长度大于8时变为红黑树,小于6时变成链表.
HashMap 和 HashSet区别?
HashSet底层基于HashMap 实现,只有少量方法是自己实现的.
一个对象加入HashSet时,先计算 hashcode 得到对象加入的位置,同时和其他元素的 hashcode 比较,若没有相同那么这个对象不重复,否则调用 equals() 比较两个对象的值是否相同.
标签:循环 lin shc efault pac vat stat 比较 equal
原文地址:https://www.cnblogs.com/qifengle1412/p/12872784.html