集合框架
概念:对象的容器为集合,不能直接存放8种基本数据类型,jdk1.5以上提供了自动装箱机制,集合可以直接将基本类型的值存放入容器中,但是容器会自动的将基本数据类型装箱为该基本数据类型对应的包装类型的对象。
比较 | List | Set | Map |
---|---|---|---|
继承接口 | Collection | Collection | |
常见实现类 | AbstractList(常见继承子类有:ArrayList、LinkedList、Vector) | AbstractSet(常见继承子类有:HashSet、LinkedHashset、TreeSet) | HashMap、TreeMap、HashTable |
常见方法 | add()、remove()、clear()、get()、contains()、size() | add()、remove()、clear()、get()、contains()、size() | put()、get()、 remove()、clear()、containsKey()、containsValue()、keySet()、values()、size() |
元素 | 可重复 | 不可重复(用equals()判断) | key不可重复 |
顺序 | 有序 | 无序(实际顺序由hashCode决定) | |
线程安全 | Vector线程安全 | Hashtble线程安全 |
常用方法:
java.util.Collection<E>
java.util.Collection.size()
java.util.Collection.isEmpty()
java.util.Collection.contains(Object)
java.util.Collection.iterator()
java.util.Collection.toArray()
java.util.Collection.toArray(T[])
java.util.Collection.add(E)
java.util.Collection.remove(Object)
java.util.Collection.containsAll(Collection<?>)
java.util.Collection.addAll(Collection<? extends E>)
java.util.Collection.removeAll(Collection<?>)
java.util.Collection.removeIf(Predicate<? super E>)
java.util.Collection.retainAll(Collection<?>)
java.util.Collection.clear()
java.util.Collection.equals(Object)
java.util.Collection.hashCode()
java.util.Collection.spliterator()
java.util.Collection.stream()
java.util.Collection.parallelStream()
一、List
1、ArrayList
ArrayList父类是AbstractList,底层数据结构是数组,因此增加删除元素速度慢,查找元素速度快。
2、LinkedList
LinkedList的父类是AbstractSequentialList,底层数据结构是双向链表,因此增加、删除元素速度快,查找元素速度慢。
3、Vector
数据结构是数组,查询快、增删慢、线程安全、效率较低。
二、Set
1、HashSet
Hashset底层是由HashMap实现的。
Haset的值存放在HashMap的key上,HashMap的value都为常量PRESENT
2、TreeSet
基于排列顺序实现元素的不重复
实现了SortedSet接口,对于集合中的元素进行自动排序。
元素的对象类型可以通过implements(实现)Comparable接口,然后重写ComparTo方法指定排序规则。