摘要:通過迭代器,開發人員不需要了解容器底層的結構,就可以實現對容器的遍歷。由于創建迭代器的代價小,因此迭代器通常被稱為輕量級的容器。定義如下中定義的方法如下本節主要總結了集合相關的頂層接口,下一節將分析每一類集合實現類。
首先,下面是Collection、Map和、Set接口的相關架構圖
Collection接口
Map接口
圖片來源:http://www.cnblogs.com/skywan...
和Collection相關的接口主要有Collection、List和Set接口,其他接口會在介紹三個接口中穿插講解。
1、Collection接口Collection是一個抽象出來的接口,定義如下:
public interface Collectionextends Iterable {}
其中包括了集合的基本操作,包括:刪除、添加、遍歷、大小等。
Collection中定義方法如下:
int size(); boolean isEmpty(); boolean contains(Object o); Iteratoriterator(); Object[] toArray(); T[] toArray(T[] a); boolean add(E e); boolean remove(Object o); boolean containsAll(Collection> c); boolean addAll(Collection extends E> c); boolean removeAll(Collection> c); boolean retainAll(Collection> c); void clear(); boolean equals(Object o); int hashCode(); //1.8新增 default boolean removeIf(Predicate super E> filter){} default Spliterator spliterator(){} default Stream stream(){} default Stream parallelStream() {}
AbstractCollection抽象類繼承自Collection,實現了除iterator()和size()的所有方法。定義如下:
public abstract class AbstractCollection2、List接口implements Collection {}
List接口繼承自Collection,List中的元素的允許重復的。定義如下:
public interface Listextends Collection {}
和Collection不重合、List特有的方法如下:
boolean addAll(int index, Collection extends E> c); default void replaceAll(UnaryOperatoroperator) {} default void sort(Comparator super E> c) {} E get(int index); E set(int index, E element); void add(int index, E element); E remove(int index); int indexOf(Object o); int lastIndexOf(Object o); ListIterator listIterator(); ListIterator listIterator(int index); List subList(int fromIndex, int toIndex);
AbstractList抽象類繼承了AbstractCollection,并且實現了List接口,定義如下:
public abstract class AbstractList3、Set接口extends AbstractCollection implements List {}
Set接口繼承自Collection,Set是數學中定義的集合,元素不允許重復。定義如下:
public interface Setextends Collection {}
Set接口和Collection中方法一致,具體見Collection接口方法。
AbstractSet抽象類繼承了AbstractCollection,并且實現了Set接口,定義如下:
public abstract class AbstractSet二、Map相關接口和類extends AbstractCollection implements Set {}
Map是一種鍵值對的映射,沒有繼承Collection接口,具體定義如下:
public interface Map1、Map接口{}
Map接口中定義了添加、刪除、遍歷等相關方法,具體方法如下:
int size(); boolean isEmpty(); boolean containsKey(Object key); boolean containsValue(Object value); V get(Object key); V put(K key, V value); V remove(Object key); void putAll(Map extends K, ? extends V> m); void clear(); Set2、AbstractMap類keySet(); Collection values(); Set > entrySet(); interface Entry {} boolean equals(Object o); int hashCode(); //1.8新增 default V getOrDefault(Object key, V defaultValue) {} default void forEach(BiConsumer super K, ? super V> action) {} default void replaceAll(BiFunction super K, ? super V, ? extends V> function) {} default V putIfAbsent(K key, V value) {} default boolean remove(Object key, Object value) {} default boolean replace(K key, V oldValue, V newValue) {} default V replace(K key, V value) {} default V computeIfAbsent(K key, Function super K, ? extends V> mappingFunction) {} default V computeIfPresent(K key, BiFunction super K, ? super V, ? extends V> remappingFunction) {} default V compute(K key, BiFunction super K, ? super V, ? extends V> remappingFunction) {} default V merge(K key, V value, BiFunction super V, ? super V, ? extends V> remappingFunction){}
AbstractMap抽象類實現了Map接口,實現Map中定義的方法,定義如下:
public abstract class AbstractMap3、SortedMap和NavigableMap接口implements Map {}
SortedMap表示一個有序的鍵值映射,排序的方式有兩種:自然排序和指定比較強排序。插入有序的SortedMap的所有元素都必須實現Comparable接口,具體方法如下:
Comparator super K> comparator(); SortedMapIterator相關接口subMap(K fromKey, K toKey); SortedMap headMap(K toKey); SortedMap tailMap(K fromKey); K firstKey(); K lastKey(); Set keySet(); Collection values(); Set > entrySet(); NavigableMap是SortedMap接口的擴展,有針對給定搜索目標返回最接近匹配項的導航方法。具體方法如下: Map.Entry lowerEntry(K key); K lowerKey(K key); Map.Entry floorEntry(K key); K floorKey(K key); Map.Entry ceilingEntry(K key); K ceilingKey(K key); Map.Entry higherEntry(K key); K higherKey(K key); Map.Entry firstEntry(); Map.Entry lastEntry(); Map.Entry pollFirstEntry(); Map.Entry pollLastEntry(); NavigableMap descendingMap(); NavigableSet navigableKeySet(); NavigableSet descendingKeySet(); NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive); NavigableMap headMap(K toKey, boolean inclusive); NavigableMap tailMap(K fromKey, boolean inclusive); SortedMap subMap(K fromKey, K toKey); SortedMap headMap(K toKey); SortedMap tailMap(K fromKey);
Iterator的工作是遍歷并選擇序列中的對象,它提供了一種訪問一個容器(container)對象中的各個元素,而又不必暴露該對象內部細節的方法。通過迭代器,開發人員不需要了解容器底層的結構,就可以實現對容器的遍歷。由于創建迭代器的代價小,因此迭代器通常被稱為輕量級的容器。
1、Iterator接口Iterator接口的定義如下:
public interface Iterator{}
Iterator中定義的方法如下:
boolean hasNext(); E next(); //1.8新增 default void remove() {} default void forEachRemaining(Consumer super E> action) {}2、ListIterator接口
支持在迭代期間向List中添加或刪除元素,并且可以在List中雙向滾動。定義如下:
public interface ListIteratorextends Iterator {}
ListIterator中定義的方法如下:
boolean hasNext(); E next(); boolean hasPrevious(); E previous(); int nextIndex(); int previousIndex(); void remove(); void set(E e); void add(E e);
本節主要總結了集合相關的頂層接口,下一節將分析每一類集合實現類。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71986.html
摘要:集合工具包是在包中,實現了數據結構數組棧鏈表隊列映射和集合。集合主要可以劃分為個部分列表集合映射工具類迭代器枚舉類和。集合的框架圖如下圖片來源集合頂層接口主要有和。和都是集合遍歷相關接口,是特有的遍歷工具接口 Java集合工具包是在java.util.*包中,實現了數據結構:數組、棧、鏈表、隊列、映射和集合。Java集合主要可以劃分為4個部分:List列表、Set集合、Map映射、工具...
摘要:再者,現在互聯網的面試中上點的都會涉及一下或者的問題個高級多線程面試題及回答后端掘金在任何面試當中多線程和并發方面的問題都是必不可少的一部分。假如源碼分析之掘金概念是中集合的一種實現。 攻破 JAVA NIO 技術壁壘 - 后端 - 掘金現在使用NIO的場景越來越多,很多網上的技術框架或多或少的使用NIO技術,譬如Tomcat,Jetty。學習和掌握NIO技術已經不是一個JAVA攻城獅...
摘要:第三階段常見對象的學習集合框架集合在實際需求中,我們常常會遇到這樣的問題,在諸多的數據中,通過其編號來尋找某一些信息,從而進行查看或者修改,例如通過學號查詢學生信息。面試題和的區別是單列集合的頂層接口,有子接口和。 第三階段 JAVA常見對象的學習 集合框架——Map集合 showImg(https://segmentfault.com/img/remote/1460000019683...
摘要:第三階段常見對象的學習集合框架概述和集合的遍歷一集合框架的概述集合的由來如果一個程序只包含固定數量的且其生命周期都是已知的對象,那么這是一個非常簡單的程序。進而它們的遍歷方式也應該是不同的,最終就沒有定義迭代器類。 第三階段 JAVA常見對象的學習 集合框架概述和集合的遍歷 (一) 集合框架的概述 (1) 集合的由來 如果一個程序只包含固定數量的且其生命周期都是已知的對象,那么這是一...
摘要:每次迭代器進結構性修改的時候都將和進行對比如果兩種相等則說明沒有其他迭代器修改了對象,可以進行。 一、ArrayList簡介 ArrayList的內部實現了動態數組,提供了動態的增加和減少元素,繼承AbstractList類,并且實現了List、RandomAccess、Cloneable和java.io.Serializable接口。ArrayList是一個數組隊列,提供添加、刪除、...
閱讀 1376·2021-10-14 09:43
閱讀 4209·2021-09-27 13:57
閱讀 4552·2021-09-22 15:54
閱讀 2548·2021-09-22 10:54
閱讀 2350·2021-09-22 10:02
閱讀 2108·2021-08-27 13:11
閱讀 867·2019-08-29 18:44
閱讀 1639·2019-08-29 15:20