集合主要有两种主要类型:Collection,Map。
Collection接口实现了Interface接口,存放的数据是无序的、可重复的。实现它的接口主要有两个,一个是List、一个是Set。
Collection:
1、List:存放的数据是有序、可重复的。List集合中的元素都有下标。实现List接口的类主要有ArrayList、LinkedList、Vector。
1)ArrayList:按数组的结构存放数据。
2)LinkedList:按链表方式存储数据。双向链表
3)Vector:同ArrayList相同,也按数组的结构存放数据;与ArrayList不同的是,Vector是线程同步的,而ArrayList是线程不同步的。
2、Set:存放的数据是无序、不可重复的,无下标。实现Set接口的主要有HashSet、SortedSet。
1)HashSet:底层以HashMap的方式存储。以哈希散列表的方式存储数据。判断对象重复的方式,调用add()方法时,先调用hashCode()方法,判断hashcode是否相同,如果相同,则继续调用equals()方法;否则不会再调用equals()方法,直接进行数据存储。所以在定义类时,一定要同时重写hashCode()、equals()方法。
2)SortedSet:实现SortedSet接口的类主要有TreeSet,TreeSet无序、不可重复。TreeSet去除重复项的方式:TreeSet要求存放的对象实现Comparable接口或者自定义一个比较器。
Map以key、value成对的方式存入元素。其中key以Set的方式存放,也是无序、不可重复;value以Collection的方式存放,是无序、可重复的。实现Map接口的主要有HashMap、HashTable、SortedMap。
Map:
1、HashMap:以HashSet的方式存放,线程不同步,因此去除重复项一定要重写hashCode()、equals()方法。可以使用null作为key或者value。
2、HashTable:线程同步,不可以使用null作为key或者value。
3、SortedMap:实现SortedMap的类主要有TreeMap。TreeMap的key以TreeSet的方式存储数据。