Java集合框架之容器间的区别

集合框架

概念:对象的容器为集合,不能直接存放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方法指定排序规则。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章