Collection接口(java.util):
List接口(有序,可重复,查询速度快,插入或删除慢):
LinkedList类
ArrayList类
Vector类
Set接口(无序,不可重复):
HashSet类(无序,不可重复)
TreeSet类(有序(用二叉排序树),不可重复)
Map接口(java.util)[使用key-value来映射存储数据,key必须唯一,value可以重复]:
HashMap类(无序)
TreeMap类(有序(用二叉排序树))
遍历:
Iterator接口(java.util):迭代输出,是使用最多的输出方式
ListIterator接口(java.util):是Iterator的子接口,专门用于输出list中的内容
foreach和for循环
ArrayList和LinkedList的区别
LinkedList经常用在增删操作较多,而查询操作较少的情况下,ArrayList则相反用在增删操作较少,查询较多的情况下
HashMap
HashMap是最常用的Map,它根据HashCode值存储数据,根据键可以直接获取它的值,因此访问速度快。HshMap最多只允许一条记录的键为NULL,允许多条记录的值为NULL,是非同步的
Hashtable
LinkedHashMapHashtable与HashMap类似,但它支持线程的同步,所以是线程安全的,Hashtable在写入时比较慢,集成自Dictionary类,不同的是它不允许记录的键或值为null,同时效率较低
LinkedHashMap保存了记录插入的顺序,在用Iterator遍历的时,先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢
TreeMap
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是是按键值的升序排序(自然排序)
List集合常用方法
Vector和ArrayList
Vector的方法都是同步的(Synchronized),是线程安全的,而ArrayList的方法是不是,由于线程的同步必然要影响性能,因此ArrayList的性能比Vector好。
当Vector或ArrayList超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%大小这样ArrayList就有利于节约内存空间
通过迭代器遍历一个List
Iterator<String> it = l.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
Collections是一个对集合操作的包装类
public static <T> void sort(List<T> list,Comparator<? super T> c) 根据元素的自然顺序 对指定列表按升序进行排序。
public static <T> int binarySearch(List<? extends T> list, T key,Comparator<? super T> c)使用二分搜索法搜索指定列表,以获得指定对象。
public static void reverse(List<?> list) 反转指定列表中元素的顺序。
public static <T> int binarySearch(List<? extends T> list, T key,Comparator<? super T> c)使用二分搜索法搜索指定列表,以获得指定对象。
public static void reverse(List<?> list) 反转指定列表中元素的顺序。
public static void shuffle(List<?> list) public static void swap(List<?> list,int i,int j) 使用默认随机源对指定列表进行置换