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。 時間一天天過去,這兩個亮點也變得越來越亮,很快,它