1. 程式人生 > >Java資料結構詳解(一)-Collection介面

Java資料結構詳解(一)-Collection介面

Java資料結構-collection介面

一,Collection介面結構圖

這裡寫圖片描述

Collection介面詳解

collection是一個被高度抽象出來的介面、提供基本的操作資料的行為、屬性的定義.
collection api介紹:

public interface Collection<E> extends Iterable<E> {

/**
返回當前collection的邏輯大小
*/
int size();

/**
* 返回collection是否為空 為空返回TRUE,  不為空返回FALSE。
*/
boolean isEmpty();

//如果collection包含元素 o 則返回TRUE,否則返回FALSE。
boolean contains(Object o); //返回此collection的迭代器iterator。 Iterator<E> iterator(); //返回包含當前collection的所有元素的陣列 Object[] toArray(); //返回以T型別的包含所有元素的陣列 <T> T[] toArray(T[] a); //確保此 collection 包含指定的元素 可選操作 boolean add(E e); //移除指定元素 o boolean remove(Object o); //如果當前collection包含指定collection c的所有元素 則返回TRUE。
boolean containsAll(Collection<?> c); //將指定collection的所有元素新增到當前collection中 boolean addAll(Collection<? extends E> c); //在當前collection中刪除包含指定collection中的所有元素 boolean removeAll(Collection<?> c); /**Java8新增的方法 新增修飾符default 可以在介面中實現方法 *按照指定過濾器filter規則 移除元素 * @since 1.8 */ default boolean removeIf(Predicate<? super
E> filter) { Objects.requireNonNull(filter); boolean removed = false; final Iterator<E> each = iterator(); while (each.hasNext()) { if (filter.test(each.next())) { each.remove(); removed = true; } } return removed; } //在此collection種僅保留 指定collection中存在的元素 //換句話說就是 移除此collection中除了C中的所有元素 boolean retainAll(Collection<?> c); //刪除此collection中所有的元素。 void clear(); //將此collection與指定元素進行比較 boolean equals(Object o); //返回此collection的hash碼 int hashCode();

可以說collection是Java資料結構佇列形式儲存的頂級 介面 ,JDK不提供直接實現,而是下面又細分了set List queue等子介面。

所有實現了collection的(通過子介面set List queue等實現)的類應該提供兩個標準的建構函式。

  • 一個是無參構造器void
  • 一個是有單個型別引數的構造器

二,詳細的結構圖

這裡寫圖片描述

三,abstraCollection

abstractCollection 抽象類簡介:
AbstractCollection是一個實現Collection介面的抽象類,該類沒有其他的額外方法,該類裡面有隊Collection的簡單實現,但是對於子類來說,必須要實現

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

這兩個方法,AbstractCollection抽象類除了上面的兩個方法沒有實現,其他方法都提供了簡單的實現。

另外AbstractCollection的add方法:

    public boolean add(E e) {
        throw new UnsupportedOperationException();
    }

抽象類AbstractCollection中對 add方法的實現 只是丟擲異常。不同資料型別的子類應該實現不同的add 方法。

對於AbstractCollection 的總結:

/** 
 * 此類提供 Collection 介面的骨幹實現,以最大限度地減少了實現此介面所需的工作。  
 *  
 * 子類要繼承此抽象類、 
 * 1、必須提供兩個構造方法、一個無參一個有參。 
 * 2、必須重寫抽象方法 Iterator<E> iterator();方法體中必須有hasNext()和next()兩個方法、同時必須實現remove方法 用於操作集合中元素。 
 * 3、一般要重寫add方法、否則子類呼叫add方法會拋UnsupportedOperationException異常。 
 * 子類通常要重寫此類中的方法已得到更有效的實現、 
 */  

相關推薦

Java資料結構-Collection介面

Java資料結構-collection介面 一,Collection介面結構圖 Collection介面詳解 collection是一個被高度抽象出來的介面、提供基本的操作資料的行為、屬性的定義. collection api介紹: p

Java資料結構十二- HashMap

HashMap 基於雜湊表的 Map 介面的實現。此實現提供所有可選的對映操作,並允許使用 null 值和 null 鍵。(除了非同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同。)此類不保證對映的順序,特別是它不保證該順序恆

hashmap資料結構之HashMap、HashTable、ConcurrentHashMap 的區別

【hashmap 與 hashtable】   hashmap資料結構詳解(一)之基礎知識奠基 hashmap資料結構詳解(二)之走進JDK原始碼 hashmap資料結構詳解(三)之hashcode例項及大小是2的冪次方解釋 hashmap資料結構詳解(四)之has

Java資料結構和演算法:簡介

  本系列部落格我們將學習資料結構和演算法,為什麼要學習資料結構和演算法,這裡我舉個簡單的例子。   程式設計好比是一輛汽車,而資料結構和演算法是汽車內部的變速箱。一個開車的人不懂變速箱的原理也是能開車的,同理一個不懂資料結構和演算法的人也能程式設計。但是如果一個開車的人懂變速箱的原理,比如降低速

Java 反射機制

Java 反射機制詳解(一) 主要介紹以下幾方面內容 理解 Class 類 理解 Java 的類載入機制 學會使用 ClassLoader 進行類載入 理解反射的機制 掌握 Constructor、Method、Field 類的用法 理解並掌握動態代理&n

Java資料結構和演算法

Java資料結構和演算法(一)樹 前面講到的連結串列、棧和佇列都是一對一的線性結構,這節講一對多的線性結構 - 樹。「一對多」就是指一個元素只能有一個前驅,但可以有多個後繼。 一、樹 度(Degree) :節點擁有的子樹數。樹的度是樹中各個節點度的最大值。 節點 :度為 0 的節點稱為葉節

Tire樹字典樹資料結構圖解及模板

先在這裡放模板,具體圖解回去再發 #include <map> #include <queue> #include <cstdlib> #include <cm

Java資料結構和演算法線性結構之單鏈表

Java資料結構和演算法(一)線性結構之單鏈表 prev current next -------------- -------------- -------------- | value | next | ->

Java資料結構和演算法線性結構

Java資料結構和演算法(一)線性結構 資料結構與演算法目錄(https://www.cnblogs.com/binarylei/p/10115867.html) 線性表 是一種邏輯結構,相同資料型別的 n 個數據元素的有限序列,除第一個元素外,每個元素有且僅有個直接前驅,除最後一個元素外,每個元素

Java資料結構與演算法

一、學習資料結構與演算法的目的         預估程式在大量的資料集上執行時需要的時間成本和空間成本。 二、遞迴簡介          遞迴的四條基本法則:         一個簡單的遞迴案例:  三、實現泛型特性構建 pre-java5 1.引入泛

java集合框架

2,總體體系結構                                                                                                                                                  

表空間資料檔案

一.表空間的建立 建立表空間: Create tablespace felix Datafile'/u01/app/oracle/oradata/felix/felixtbs.dbf' Size100m autoextendonnext10m maxsize10

Java String類

String類是一個字串型別的類,使用“XXXX”定義的內容都是字串,雖然這個類在使用上有一些特殊,但是String本身是一個類。 一、String的例項化兩種方式 1、直接賦值例項化: String StringName= "xxx"; 以上是Stri

Java基礎集合

作為新手,對於集合來講,多少有點感悟 先介紹一下什麼是集合 這是我看的書《java從入門到精通》清華大學出版社 引用裡面的一句話,集合就是一個容器。     對於集合內的各個物件很容易將其存放到集合中,也很容易將其從集合中取出來,還可以按照一定的順序放入。     對集合

Java虛擬機器------簡介

  本系列部落格我們將以當前預設的主流虛擬機器HotSpot 為例,詳細介紹 Java虛擬機器。以 JDK1.7 為主,同時介紹與 JDK1.8 的不同之處,通過Oracle官網以及各種文獻進行整理,並加以驗證,力求保證這塊知識的正確性,完整性。   以下是本系列部落格參考的相關文件:   ①、JDK1.

PE檔案--資料結構欄位

typedef struct _IMAGE_OPTIONAL_HEADER{//// Standard fields.//+18h WORD Magic; // 標誌字, ROM 映像(0107h),普通可執行檔案(010Bh)+1Ah BYTE MajorLinkerVersion; // 連結程式的主版

集合Collection以及簡單資料結構

<span style="font-family:Arial;font-size:18px;"> // for迴圈改寫,效率高 for(Iterator it = c.iterator();it.hasNext();){ Student s = (Student) it.next(

JVM的基本結構及其各部分

後臺 棧幀 結束 依次 方法參數 ati 0.00 實例 同時存在 JVM的基本結構及其各部分詳解(一)(轉載) 1 java虛擬機的基本結構如圖: 1)類加載子系統負責從文件系統或者網絡中加載Class信息,加載的類信息存放於一塊稱為方法區的內存空間。除了類的信息外,方

Java的反射機制

pbc spa 詳解 uno face target lan tor cin 8n72q傅釁8戰sig叢http://www.docin.com/app/user/userinfo?userid=179185461 8u炊3F7LB椒1http://huiyi.docin.

PHP與Java集成開發

new 編程語言 到你 其中 web-inf request 測試 add 輸入 很久以前,有人從www上看到看到天空上一個很亮的亮點,它就是Java語言,與此同時,在另一個地方一位夢想家也看到了一個亮點,它就是PHP。 時間一天天過去,這兩個亮點也變得越來越亮,很快,它