Java集合框架

 

Java集合框架

 

Java集合框架_第1张图片

接口:

java.util
接口 Set<E>

类型参数:

E - 此 set 所维护元素的类型

所有超级接口:

Collection<E>, Iterable<E>

所有已知子接口:

NavigableSet<E>,SortedSet<E>

所有已知实现类:

AbstractSet, ConcurrentSkipListSet,CopyOnWriteArraySet,EnumSet,HashSet,JobStateReasons,LinkedHashSet,TreeSet

public interface Set<E> extendsCollection<E>

一个不包含重复元素的 collection。更确切地讲,set不包含满足 e1.equals(e2)的元素对 e1 e2,并且最多包含一个 null元素。正如其名称所暗示的,此接口模仿了数学上的set 抽象。

 

java.util
接口 SortedSet<E>

类型参数:

E - set维护的元素的类型

所有超级接口:

Collection<E>,Iterable<E>,Set<E>

所有已知子接口:

NavigableSet<E>

所有已知实现类:

ConcurrentSkipListSet,TreeSet

public interface SortedSet<E> extendsSet<E>

进一步提供关于元素的总体排序 Set。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set时提供的Comparator进行排序。该 set的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。(此接口是SortedMap set对应接口)。

插入有序 set 的所有元素都必须实现 Comparable接口(或者被指定的比较器所接受)。

 

java.util
接口 List<E>

所有超级接口:

Collection<E>,Iterable<E>

所有已知实现类:

AbstractList,AbstractSequentialList,ArrayList, AttributeList, CopyOnWriteArrayList,LinkedList,RoleList,RoleUnresolvedList, Stack, Vector

public interface List<E> extendsCollection<E>

有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。

set 不同,列表通常允许重复的元素。

 

java.util
接口 Map<K,V>

类型参数:

K - 此映射所维护的键的类型

V - 映射值的类型

所有已知子接口:

Bindings,ConcurrentMap<K,V>,ConcurrentNavigableMap<K,V>, LogicalMessageContext,MessageContext,NavigableMap<K,V>, SOAPMessageContext,SortedMap<K,V>

所有已知实现类:

AbstractMap,Attributes,AuthProvider, ConcurrentHashMap,ConcurrentSkipListMap,EnumMap, HashMap,Hashtable,IdentityHashMap,LinkedHashMap, PrinterStateReasons,Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport,TreeMap,UIDefaults, WeakHashMap

public interface Map<K,V>

将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

 

java.util
接口 SortedMap<K,V>

类型参数:

K - 此映射所维护的键的类型

V - 映射值的类型

所有超级接口:

Map<K,V>

所有已知子接口:

ConcurrentNavigableMap<K,V>,NavigableMap<K,V>

所有已知实现类:

ConcurrentSkipListMap,TreeMap

public interface SortedMap<K,V> extendsMap<K,V>

进一步提供关于键的总体排序 Map。该映射是根据其键的自然顺序进行排序的,或者根据通常在创建有序映射时提供的Comparator进行排序。对有序映射的 collection 视图(由 entrySetkeySet values方法返回)进行迭代时,此顺序就会反映出来。要采用此排序方式,还需要提供一些其他操作(此接口是SortedSet的对应映射)。

插入有序映射的所有键都必须实现 Comparable 接口(或者被指定的比较器接受)。

 

 

 

实现List接口的类:

ArrayList:效率高、不直接支持并发,多用于查询。ArrayList的实质就是一个会自动增长的数组,它是用封装的数组来实现的List接口的,底层用数组实现。随着向ArrayList中不断添加元素,其容量会自动增长。

LinkedList:增删快、查找慢,故多用于插入和删除。List接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List接口外,LinkedList 类还为在列表的开头及结尾 getremove insert元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。

Vector:可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector的大小可以根据需要增大或缩小,以适应创建 Vector后进行添加或移除项的操作。

 

实现Set接口的类:

HashSet:此类实现 Set接口,由哈希表支持(实际上是一个 HashMap实例,Key-null类型的HashMap)。它不保证 set的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null元素。

实现Set子接口SortedSet的类:

TreeSet: 基于TreeMap NavigableSet实现。使用元素的自然顺序对元素进行排序,或者根据创建 set时提供的Comparator进行排序,具体取决于使用的构造方法。

如果要正确实现 Set 接口,则 set维护的顺序(无论是否提供了显式比较器)必须 equals一致

另一常用构造方法:public TreeSet(Comparator<? superE> comparator)

构造一个新的空 TreeSet,它根据指定比较器进行排序。

E - 此 set 所维护元素的类型  ; Comparator中要传对象的类型是 E的父类

<?extends E>:传e的子类

 

java.lang 接口 Comparable<T>

类型参数:T -可以与此对象进行比较的那些对象的类型

public interface Comparable<T>

此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo方法被称为它的自然比较方法

一个实现此接口的方法:int compareTo(T o)

比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

 

java.util 接口Comparator<T>

类型参数:

T - Comparator可以比较的对象类型

所有已知实现类:

Collator,RuleBasedCollator

public interface Comparator<T>

强行对某个对象 collection 进行整体排序的比较函数。可以将 Comparator传递给 sort方法(如Collections.sort Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator来控制某些数据结构(如有序 set有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。

当且仅当对于一组元素 S 中的每个 e1 e2而言,c.compare(e1, e2)==0 e1.equals(e2)具有相等的布尔值时,Comparator c强行对 S进行的排序才叫做 equals一致的排序。

必须覆写:int compare(T o1, T o2)   比较用来排序的两个参数。

 

实现Map接口的类:

HashMap<K,V>:基于哈希表的 Map接口的实现。此实现提供所有可选的映射操作,并允许使用 null值和 null键。(除了非同步和允许使用 null之外,HashMap类与 Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

Hashtable<K,V> :此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null对象都可以用作键或值。

为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。

实现Map子接口SortedMap的类:

TreeMap<K,V>:基于红黑树(Red-Black tree)的NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator进行排序,具体取决于使用的构造方法。

 

 

你可能感兴趣的:(Java集合框架)