成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

集合框架知識(shí)系列02 集合頂層接口

helloworldcoding / 1952人閱讀

摘要:通過(guò)迭代器,開(kāi)發(fā)人員不需要了解容器底層的結(jié)構(gòu),就可以實(shí)現(xiàn)對(duì)容器的遍歷。由于創(chuàng)建迭代器的代價(jià)小,因此迭代器通常被稱(chēng)為輕量級(jí)的容器。定義如下中定義的方法如下本節(jié)主要總結(jié)了集合相關(guān)的頂層接口,下一節(jié)將分析每一類(lèi)集合實(shí)現(xiàn)類(lèi)。

首先,下面是Collection、Map和、Set接口的相關(guān)架構(gòu)圖

Collection接口

Map接口


圖片來(lái)源:http://www.cnblogs.com/skywan...

一、Collection相關(guān)接口和類(lèi)

和Collection相關(guān)的接口主要有Collection、List和Set接口,其他接口會(huì)在介紹三個(gè)接口中穿插講解。

1、Collection接口

Collection是一個(gè)抽象出來(lái)的接口,定義如下:

public interface Collection extends Iterable {}

其中包括了集合的基本操作,包括:刪除、添加、遍歷、大小等。
Collection中定義方法如下:

int size();
boolean isEmpty();
boolean contains(Object o);
Iterator iterator();
Object[] toArray();
 T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection c);
boolean addAll(Collection c);
boolean removeAll(Collection c);
boolean retainAll(Collection c);
void clear();
boolean equals(Object o);
int hashCode();
//1.8新增
default boolean removeIf(Predicate filter){}
default Spliterator spliterator(){}
default Stream stream(){}
default Stream parallelStream() {}

AbstractCollection抽象類(lèi)繼承自Collection,實(shí)現(xiàn)了除iterator()和size()的所有方法。定義如下:

public abstract class AbstractCollection implements Collection {}
2、List接口

List接口繼承自Collection,List中的元素的允許重復(fù)的。定義如下:

public interface List extends Collection {}

和Collection不重合、List特有的方法如下:

boolean addAll(int index, Collection c);
default void replaceAll(UnaryOperator operator) {}
default void sort(Comparator 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抽象類(lèi)繼承了AbstractCollection,并且實(shí)現(xiàn)了List接口,定義如下:

public abstract class AbstractList extends AbstractCollection implements List {}
3、Set接口

Set接口繼承自Collection,Set是數(shù)學(xué)中定義的集合,元素不允許重復(fù)。定義如下:

public interface Set extends Collection {}

Set接口和Collection中方法一致,具體見(jiàn)Collection接口方法。

AbstractSet抽象類(lèi)繼承了AbstractCollection,并且實(shí)現(xiàn)了Set接口,定義如下:

public abstract class AbstractSet extends AbstractCollection implements Set {}
二、Map相關(guān)接口和類(lèi)

Map是一種鍵值對(duì)的映射,沒(méi)有繼承Collection接口,具體定義如下:

public interface Map {}
1、Map接口

Map接口中定義了添加、刪除、遍歷等相關(guān)方法,具體方法如下:

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 m);
void clear();
Set 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 action) {}
default void replaceAll(BiFunction 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 mappingFunction) {}
default V computeIfPresent(K key,
BiFunction remappingFunction) {}
default V compute(K key,
BiFunction remappingFunction) {}
default V merge(K key, V value,
BiFunction remappingFunction){}
2、AbstractMap類(lèi)

AbstractMap抽象類(lèi)實(shí)現(xiàn)了Map接口,實(shí)現(xiàn)Map中定義的方法,定義如下:

public abstract class AbstractMap implements Map {}
3、SortedMap和NavigableMap接口

SortedMap表示一個(gè)有序的鍵值映射,排序的方式有兩種:自然排序和指定比較強(qiáng)排序。插入有序的SortedMap的所有元素都必須實(shí)現(xiàn)Comparable接口,具體方法如下:

Comparator comparator();
SortedMap 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接口的擴(kuò)展,有針對(duì)給定搜索目標(biāo)返回最接近匹配項(xiàng)的導(dǎo)航方法。具體方法如下:

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相關(guān)接口

Iterator的工作是遍歷并選擇序列中的對(duì)象,它提供了一種訪(fǎng)問(wèn)一個(gè)容器(container)對(duì)象中的各個(gè)元素,而又不必暴露該對(duì)象內(nèi)部細(xì)節(jié)的方法。通過(guò)迭代器,開(kāi)發(fā)人員不需要了解容器底層的結(jié)構(gòu),就可以實(shí)現(xiàn)對(duì)容器的遍歷。由于創(chuàng)建迭代器的代價(jià)小,因此迭代器通常被稱(chēng)為輕量級(jí)的容器。

1、Iterator接口

Iterator接口的定義如下:

public interface Iterator {}

Iterator中定義的方法如下:

boolean hasNext();
E next();
//1.8新增
default void remove() {}
default void forEachRemaining(Consumer action) {}
2、ListIterator接口

支持在迭代期間向List中添加或刪除元素,并且可以在List中雙向滾動(dòng)。定義如下:

public interface ListIterator extends Iterator {}

ListIterator中定義的方法如下:

boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
void remove();
void set(E e);
void add(E e);

本節(jié)主要總結(jié)了集合相關(guān)的頂層接口,下一節(jié)將分析每一類(lèi)集合實(shí)現(xiàn)類(lèi)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71986.html

相關(guān)文章

  • 集合框架知識(shí)系列01 總體框架

    摘要:集合工具包是在包中,實(shí)現(xiàn)了數(shù)據(jù)結(jié)構(gòu)數(shù)組棧鏈表隊(duì)列映射和集合。集合主要可以劃分為個(gè)部分列表集合映射工具類(lèi)迭代器枚舉類(lèi)和。集合的框架圖如下圖片來(lái)源集合頂層接口主要有和。和都是集合遍歷相關(guān)接口,是特有的遍歷工具接口 Java集合工具包是在java.util.*包中,實(shí)現(xiàn)了數(shù)據(jù)結(jié)構(gòu):數(shù)組、棧、鏈表、隊(duì)列、映射和集合。Java集合主要可以劃分為4個(gè)部分:List列表、Set集合、Map映射、工具...

    honhon 評(píng)論0 收藏0
  • net - 收藏集 - 掘金

    摘要:再者,現(xiàn)在互聯(lián)網(wǎng)的面試中上點(diǎn)的都會(huì)涉及一下或者的問(wèn)題個(gè)高級(jí)多線(xiàn)程面試題及回答后端掘金在任何面試當(dāng)中多線(xiàn)程和并發(fā)方面的問(wèn)題都是必不可少的一部分。假如源碼分析之掘金概念是中集合的一種實(shí)現(xiàn)。 攻破 JAVA NIO 技術(shù)壁壘 - 后端 - 掘金現(xiàn)在使用NIO的場(chǎng)景越來(lái)越多,很多網(wǎng)上的技術(shù)框架或多或少的使用NIO技術(shù),譬如Tomcat,Jetty。學(xué)習(xí)和掌握NIO技術(shù)已經(jīng)不是一個(gè)JAVA攻城獅...

    岳光 評(píng)論0 收藏0
  • Java集合框架——Map接口

    摘要:第三階段常見(jiàn)對(duì)象的學(xué)習(xí)集合框架集合在實(shí)際需求中,我們常常會(huì)遇到這樣的問(wèn)題,在諸多的數(shù)據(jù)中,通過(guò)其編號(hào)來(lái)尋找某一些信息,從而進(jìn)行查看或者修改,例如通過(guò)學(xué)號(hào)查詢(xún)學(xué)生信息。面試題和的區(qū)別是單列集合的頂層接口,有子接口和。 第三階段 JAVA常見(jiàn)對(duì)象的學(xué)習(xí) 集合框架——Map集合 showImg(https://segmentfault.com/img/remote/1460000019683...

    princekin 評(píng)論0 收藏0
  • Java集合框架概述和集合的遍歷

    摘要:第三階段常見(jiàn)對(duì)象的學(xué)習(xí)集合框架概述和集合的遍歷一集合框架的概述集合的由來(lái)如果一個(gè)程序只包含固定數(shù)量的且其生命周期都是已知的對(duì)象,那么這是一個(gè)非常簡(jiǎn)單的程序。進(jìn)而它們的遍歷方式也應(yīng)該是不同的,最終就沒(méi)有定義迭代器類(lèi)。 第三階段 JAVA常見(jiàn)對(duì)象的學(xué)習(xí) 集合框架概述和集合的遍歷 (一) 集合框架的概述 (1) 集合的由來(lái) 如果一個(gè)程序只包含固定數(shù)量的且其生命周期都是已知的對(duì)象,那么這是一...

    happyhuangjinjin 評(píng)論0 收藏0
  • 集合框架知識(shí)系列03 ArrayList的源碼分析和使用示例

    摘要:每次迭代器進(jìn)結(jié)構(gòu)性修改的時(shí)候都將和進(jìn)行對(duì)比如果兩種相等則說(shuō)明沒(méi)有其他迭代器修改了對(duì)象,可以進(jìn)行。 一、ArrayList簡(jiǎn)介 ArrayList的內(nèi)部實(shí)現(xiàn)了動(dòng)態(tài)數(shù)組,提供了動(dòng)態(tài)的增加和減少元素,繼承AbstractList類(lèi),并且實(shí)現(xiàn)了List、RandomAccess、Cloneable和java.io.Serializable接口。ArrayList是一個(gè)數(shù)組隊(duì)列,提供添加、刪除、...

    seasonley 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<