Collection父接口
boolean add(Object obj) //添加一个对象 boolean addAll(Collection c) //将一个集合中的所有对象添加到此集合中 void clear() //清空此集合中的所有内容 boolean contains(Object o) //检查此集合中是否包含o对象 boolean equals(Object o) //比较此集合是否与指定对象相等 boolean isEmpty() //判断此集合是否为空 boolean remove(Object o) //在此集合中移除o对象 int size() //返回此集合中的元素个数 Object[] toArray() //将此集合转换成数组
使用迭代器遍历:
Iterator it = collection.iterator();
while(it.hasNext()) {
Object obj = it.next();
}
List子接口(有序、有下标、可重复)
void add(int index, Object o) //在index位置插入对象o boolean addAll(int index, Collection c) //将一个集合中的元素添加到此集合中的index位置 Object get(int index) //返回集合中指定位置的元素 List subList(int fromIndex, int toIndex) //返回fromIndex和toIndex之间的集合元素
ListIterator迭代器可用向前或向后遍历,添加、删除、修改元素
list->数组:Integer[] arr = list.toArray(new Integer[0]); 数组->list:List< Integer > list2 = Arrays.asList(arr); //受限集合,不能添加和删除 Integer[] arr2 = {100,200,333}; List< Integer > list2 = Arrays.asList(arr2);
ArrayList(数组实现,查询快,增删慢,线程不安全)
DEFAULT_CAPACITY=10,默认容量
注意:如果没有向集合中添加任何元素时,容量为0
elementData ,存放元素的数组
size ,实际元素的个数
扩容为原来的1.5倍
Vector(数组实现,查询快,增删慢,线程不安全)
LinkedList(链表实现,增删快,查询慢)
Set集合(无序、没有下标、不能重复)
HashSet
基于HashCode实现元素不重复; 当存入元素的哈希码相同时,会调用equals进行确认,如果结果为true,则拒绝后者存入; 存储结构:哈希表(数组+链表+红黑树) 存储过程:(1)根据hashcode计算保存的位置,如果此位置为空,则直接保存,如果不为空则执行第2步; (2) 再执行equals方法,如果equals方法为true,则认为是重复,否则,形成链表;
TreeSet
基于排序顺序实现元素不重复; 实现了SortedSet接口,对集合元素自动排序; 元素对象的类型必须实现Comparable接口,指定排序顺序; 通过CompareTo方法确定是否为重复元素; 存储结构:红黑树
Map
用于存储任意键值对(Key-Value) 键:无序、无下标、不允许重复(唯一) 值:无序、无下标、允许重复
遍历:1、用keySet()拿到键
for(String key : map.keySet()) {
System.out.print(key+map.get(key));
}
2、用entrySet()方法拿到映射对,效率更高
Set < Map.Entry< String, String > > entries = map.entrySet();
for(Map.Entry< String, String> entry : entries){
System.out.print(entry.getKey()+entry.getValue());
}
HashMap(线程不安全,效率高,允许用null作为key或者value)
存储结构:哈希表(数组+链表+红黑树) 未put元素时table是null,size为0,放入put后,size初值为16,α填装因子为0.75,若size不够则翻倍; jdk1.8之后每个链表(尾插)长度大于8时,并且元素个数大于等于64时,调整为红黑树; HashSet实际上用的是HashMap的key;
Hashtable(线程安全,效率低,不允许null作为key或者value)
TreeMap(实现SortedMap接口,对key自动排序)
类似TreeSet类要实现Comparable接口,指定排序顺序;
Colletions工具类(集合工具类,定义除了存取以外的集合常用方法)
void reverse(List<> list) //反转集合中元素顺序 void shuffle(List<> list) //随机重置集合元素顺序 void sort (List<> list) //升序排序(必须要实现Comparable接口) int binarySearch(List<> list, T t)//未找到为负数 void copy(List<> dest, List<> list)//注意两个list的长度要相同才能复制
|