Java集合

来源:互联网 发布:怎么把mac照片导入u盘 编辑:程序博客网 时间:2024/05/21 04:02

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

Hashtable与HashMap类似,但它支持线程的同步,所以是线程安全的,Hashtable在写入时比较慢,集成自Dictionary类,不同的是它不允许记录的键或值为null,同时效率较低

LinkedHashMap
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 void shuffle(List<?> list) public static void swap(List<?> list,int i,int j) 使用默认随机源对指定列表进行置换