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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

9.1-全栈Java笔记: 容器泛型—认识Collection接口

發布時間:2025/3/20 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 9.1-全栈Java笔记: 容器泛型—认识Collection接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發和學習中需要時刻和數據打交道,如果組織這些數據是我們編程中重要的內容。?我們一般通過容器來容納和管理數據。

?

事實上,數組就是一種容器,可以在其中放置對象或基本類型數據。


數組的優勢:是一種簡單的線性序列,可以快速的訪問數組元素,效率高。如果從效率和類型檢查的角度講,數組是最好的。

數組的劣勢:不靈活:容量事先定義好,不能隨著需求的變化而擴容。比如:我們在一個用戶管理系統中,要把今天注冊的所有用戶取出來,那么這個用戶有多少個?我們在寫程序時是無法確定的。因此,就不能使用數組。

?

因此,數組遠遠不能滿足我們對于管理和組織數據的需求。我們需要一種更強大、更靈活的,容量隨時可擴的容器來裝載我們的對象。?這就是我們今天要學習的容器,或者叫集合。

?? ?1?容器中的接口層次結構

泛型Generics

泛型是JDK5.0以后增加的,他可以幫助我們建立類型安全的集合。在使用了泛型的中,不必進行強制類型轉換。JDK提供了支持泛型的編譯器,將運行時的類型檢查提前到了編譯時執行,使代碼可讀性和安全性更高。

?

泛型的本質就是“數據類型的參數化”。?我們可以把“泛型”理解為類型的一個占位符(形式參數),即告訴編譯器,在調用泛型時必須傳入實際類型。

自定義泛型

我們可以在類的聲明處增加泛型列表,如:<T,E,V>?此處,字符可以是任何標識符,一般采用這3個字母。

【示例1】泛型類的聲明

class?? MyCollection<E> {?

??? Object[]?objs?=?new?? Object[5];

????public?E? get(int?? index){

???????return?? (E)objs[index];

??? }


????public?void?? set(E e ,int?index){

???????objs[index] ? = e;

??? }

}

泛型E像一個占位符一樣表示“未知的某個數據類型”,我們在真正調用的時候傳入這個“數據類型”。

public?class?? TestGenerics {

????public?static?void?? main(String[] args) {

?????? MyCollection<String> mc =?new?? MyCollection<String>();

?????? mc.set("aaa", ? 0);

?????? mc.set("bbb", ? 1);

??????

??? ??? String str = ? mc.get(1);??//由于加了泛型,直接返回的就是String類型

? ? ? ?System.out.println(str);

??? }

}

容器中使用泛型

容器相關類都定義了泛型,我們在開發和工作中,在使用容器類時都要使用泛型。這樣,在容器的存儲數據、讀取數據都避免了大量的類型判斷,非常便捷。

【示例2】泛型的使用

public?static?void?main(String[] args) {

?????? List<String> list =?new?ArrayList<String>();

?????? Set<Man> mans =?new?HashSet<Man>();

?????? Map<Integer, Man> maps =?new?? HashMap<Integer, Man>();

?????? Iterator<Man> iterator = mans.iterator();

}

通過閱讀源碼,我們發現CollectionListSetMapIterator接口都定義了泛型:

因此,我們在使用這些接口及其實現類時,都要使用泛型。

菜鳥雷區

????我們只是強烈建議使用泛型。事實上,不使用編譯器也不會報錯!

Collection接口

Collection?表示一組對象,它是集中、收集的意思。Collection接口的兩個子接口是ListSet接口。

Collection接口中定義的方法

方法

說明

boolean? ? add(Object element)

增加元素到容器中

boolean? ? remove(Object element)

從容器中移除元素

boolean? ? contains(Object element)

容器中是否包含該元素

int??? ? size()

容器中元素的數量

boolean? ? isEmpty()

容器是否為空

void? ? clear()

清空容器中所有元素

Iterator? ? iterator()

獲得迭代器,用于遍歷所有元素

boolean containsAll(Collection c)

本容器是否包含c容器所有元素

boolean? ? addAll(Collection c)

將容器c中所有元素增加到本容器

boolean? ??removeAll(Collection c)

移除本容器和容器C中都包含的元素

boolean? ? retainAll(Collection c)

取本容器和容器C中都包含的元素,移除非交集元素

Object[] toArray()

轉化成Object數組

由于ListSetCollection的子接口,意味著所有ListSet的實現類都有上面的方法。我們下一節中,通過ArrayList實現類來測試上面的方法。





「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發經驗,曾在神州數碼、航天院某所研發中心從事軟件設計及研發工作,從小白逐漸做到工程師、高級工程師、架構師。精通Java平臺軟件開發,精通JAVAEE,熟悉各種流行開發框架。


筆記包含從淺入深的六大部分:

A-Java入門階段

B-數據庫從入門到精通

C-手刃移動前端和Web前端

D-J2EE從了解到實戰

E-Java高級框架精解

F-Linux和Hadoop?




轉載于:https://blog.51cto.com/javanew/1943391

總結

以上是生活随笔為你收集整理的9.1-全栈Java笔记: 容器泛型—认识Collection接口的全部內容,希望文章能夠幫你解決所遇到的問題。

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