所包含的方法:
add(element)、add(index,element)、get(index)、indexOf(obj)、lastIndexOf(obj)
remove(index)、remove(obj)、set(index,element)
ArrayList:
ArrayList底层其实是个Object数组,当使用无参构造创建ArrayList集合对象的时候;在进行第一次add的时候,会对内部的数组进行扩容,这个新数组的长度默认是10;以后再次扩容的时候 新数组的大小都是旧数组的1.5倍,频繁查找的时候使用。
LinkedList:
底层使用双向链表,因为是链表不存在初始容量,每次添加的时候new一个Node节点元素放在链表的尾部。LinkedList有两个指针,一个指向第一个元素,一个指向最后一个元素,当频繁插入和删除的时候可以使用。
Vectot:
底层是Object数组,ArrayList的线程安全版,与ArrayList区别有扩容时新数组大小是旧数组的2倍和线程是安全的。
2.Set接口 (元素无序、不可重复)HashSet(元素无序):
底层哈希表(数组+单向链表+红黑树)实现,使用的是HashMap的源码,将HashSet的值当做key存储到HashMap中,实现元素的不可重复。初始容量为16,加载因子0.75。
LinkedHashSet(元素按插入顺序排序):
底层哈希表(数组+单向链表+红黑树)的基础上在元素之间使用双向链表进行排序,保证元素按照插入顺序来进行排序,使用的是LinkedHashMap的源码。
TreeSet(默认自然排序):
底层是红黑树来进行实现,使用的是HashSet的源码,存储的元素需要实现comparable接口,或者在new TreeSet()的时候在构造器中添加Comparator比较器。存入的一定是同类型的元素,方便是使用对象的某个属性来进行排序。
(2)Map接口(键值对) 未实现Iterator 所包含的方法:
put(key,value)、get(key)、keySet()、values()、remove(key,value)、replace(key,value)
HashMap:
底层用一张哈希表(数组,单向链表,红黑树 (JDK8引入))来进行实现,内部使用了Hash算法。为了HashMap的正常使用,key一般是不可变对象,至少该对象中用于计算哈希值的属性要不可变,方可保证HashMap的正常使用。
LinkedHashMap:
底层由哈希表(数组+单向链表+红黑树+双向链表)实现,HashMap的子类,在HashMap的基础上由单向链表变成了双向链表,维护元素的添加顺序。
TreeMap:
底层使用红黑树进行存储,对key对象进行排序来确定在红黑树中的位置,key需要实现comparable接口,或者在new TreeMap()的时候在构造器中添加Comparator比较器。代码如下:
TreeMaptreeMap = new TreeMap<>(new Comparator () { @Override public int compare(Dog o1, Dog o2) { return o1.age - o2.age; } });
HashTable:
Hashtable底层也是哈希表(数组+单向链表,JDK8中未引入红黑树)实现的 是线程安全的 但是性能比较低,如果是高并发多线程项目推荐使用 ConcurrentHashMap;HashMap是线程不安全的;
二、与集合有关的类 (1)IteratorhasNext():判断是否有下一个元素,返回boolean
next():获取当前游标指向的对象
remove():删除当前游标指向的对象
(2)ComparableTreeSet和TreeMap中需要使用的到,作为主键需要进行排序确定在红黑树中的位置,key的类需要实现Comparable接口,并且重写CompareTo()方法来确定比较的方法。
三、Collection和Map的遍历方式 (1)Collection的遍历方式1.for
ArrayListlist = new ArrayList(); for (Dog a:list){ System.out.println(a); }
2.forEach
ArrayListlist = new ArrayList(); list.forEach(a->{ System.out.println(a); });
3.Iterator
ArrayList(2)Map的遍历方式list = new ArrayList(); Iterator iterator = list.iterator(); while (iterator.hasNext()) { Dog dog = iterator.next(); System.out.println(dog); }
1.for
2.forEach
3.map.entrySet()
Mapmap = new HashMap<>(); for (Map.Entry a: map.entrySet()){ System.out.println(a.getKey() + a.getValue()); }



