日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 集合框架快速预览

發布時間:2024/4/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 集合框架快速预览 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

集合 鏈表 隊列 棧 數組 映射 java.util.*

Java集合主要可以劃分為4個部分:List列表、Set集合、Map映射、工具類(Iterator迭代器、Enumeration枚舉類、Arrays和Collections)

Collection

public interface Collection<E> extends Iterable<E>

List

public interface List<E> extends Collection<E>

Set

public interface Set<E> extends Collection<E>

Queue

public interface Queue<E> extends Collection<E>

Map

public interface Map<K,V>

大致說明

看上面的框架圖,先抓住它的主干,即Collection和Map

  • Collection是一個接口,是高度抽象出來的集合,它包含了集合的基本操作和屬性
  • Collection包含了List和Set兩大分支

    • List是一個有序的隊列,每一個元素都有它的索引。第一個元素的索引值是0

    List的實現類有LinkedList, ArrayList, Vector, Stack

    • Set是一個不允許有重復元素的集合

    Set的實現類有HastSet和TreeSet

    HashSet依賴于HashMap,它實際上是通過HashMap實現的

    TreeSet依賴于TreeMap,它實際上是通過TreeMap實現的

  • Map是一個映射接口,即key-value鍵值對
  • AbstractMap是個抽象類,它實現了Map接口中的大部分API。而HashMap,TreeMap,WeakHashMap都是繼承于AbstractMap

    Hashtable雖然繼承于Dictionary,但它實現了Map接口

    • terator 它是遍歷集合的工具,即我們通常通過Iterator迭代器來遍歷集合

    我們說Collection依賴于Iterator,是因為Collection的實現類都要實現iterator()函數,返回一個Iterator對象

    ListIterator是專門為遍歷List而存在的

    • Enumeration

    它是JDK 1.0引入的抽象類。作用和Iterator一樣,也是遍歷集合;但是Enumeration的功能要比Iterator少

    Collection架構

    AbstractCollection抽象類,它實現了Collection中的絕大部分函數,在Collection的實現類中,我們就可以通過繼承AbstractCollection省去重復編碼

    AbstractList和AbstractSet都繼承于AbstractCollection,具體的List實現類繼承于AbstractList,而Set的實現類則繼承于AbstractSet

    Collection 介紹

    下面是JDK1.8的實現,它是一個接口,是高度抽象出來的集合,它包含了集合的基本操作:添加、刪除、清空、遍歷(讀取)、是否為空、獲取大小、是否保護某元素等等

    public interface Collection<E> extends Iterable<E> {int size();boolean isEmpty();boolean contains(Object var1);Iterator<E> iterator();Object[] toArray();<T> T[] toArray(T[] var1);boolean add(E var1);boolean remove(Object var1);boolean containsAll(Collection<?> var1);boolean addAll(Collection<? extends E> var1);boolean removeAll(Collection<?> var1);default boolean removeIf(Predicate<? super E> var1) {Objects.requireNonNull(var1);boolean var2 = false;Iterator var3 = this.iterator();while(var3.hasNext()) {if (var1.test(var3.next())) {var3.remove();var2 = true;}}return var2;}boolean retainAll(Collection<?> var1);void clear();boolean equals(Object var1);int hashCode();default Spliterator<E> spliterator() {return Spliterators.spliterator(this, 0);}default Stream<E> stream() {return StreamSupport.stream(this.spliterator(), false);}default Stream<E> parallelStream() {return StreamSupport.stream(this.spliterator(), true);} }

    List簡介

    public interface List<E> extends Collection<E>

    AbstractCollection

    實現了Collection 有兩個方法 iterator和size沒有實現

    public abstract Iterator<E> iterator();public abstract int size();

    里面的一些主要實現是基于iterator的,比如toArray()、remove()

    public Object[] toArray() {// Estimate size of array; be prepared to see more or fewer elementsObject[] r = new Object[size()];Iterator<E> it = iterator();for (int i = 0; i < r.length; i++) {if (! it.hasNext()) // fewer elements than expectedreturn Arrays.copyOf(r, i);r[i] = it.next();}return it.hasNext() ? finishToArray(r, it) : r;} public boolean remove(Object o) {Iterator<E> it = iterator();if (o==null) {while (it.hasNext()) {if (it.next()==null) {it.remove();return true;}}} else {while (it.hasNext()) {if (o.equals(it.next())) {it.remove();return true;}}}return false;}

    注意點:add方法需要實現類自己具體去重寫

    /*** {@inheritDoc}** <p>This implementation always throws an* <tt>UnsupportedOperationException</tt>.** @throws UnsupportedOperationException {@inheritDoc}* @throws ClassCastException {@inheritDoc}* @throws NullPointerException {@inheritDoc}* @throws IllegalArgumentException {@inheritDoc}* @throws IllegalStateException {@inheritDoc}*/public boolean add(E e) {throw new UnsupportedOperationException();}

    轉載于:https://my.oschina.net/kipeng/blog/1836988

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的java 集合框架快速预览的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。