程式設計師編程知識總結之Java 集合框架

2021-12-24 Python和人工智慧社區
Java 集合框架

早在Java 2中之前,Java就提供了特設類。比如:Dictionary, Vector, Stack, 和Properties這些類用來存儲和操作對象組。

雖然這些類都非常有用,但是它們缺少一個核心的,統一的主題。由於這個原因,使用Vector類的方式和使用Properties類的方式有著很大不同。

集合框架被設計成要滿足以下幾個目標。

為此,整個集合框架就圍繞一組標準接口而設計。你可以直接使用這些接口的標準實現,諸如:LinkedList, HashSet, 和 TreeSet等,除此之外你也可以通過這些接口實現自己的集合。

集合框架是一個用來代表和操縱集合的統一架構。所有的集合框架都包含如下內容:

接口:是代表集合的抽象數據類型。接口允許集合獨立操縱其代表的細節。在面向對象的語言,接口通常形成一個層次。

實現(類):是集合接口的具體實現。從本質上講,它們是可重複使用的數據結構。

算法:是實現集合接口的對象裡的方法執行的一些有用的計算,例如:搜索和排序。這些算法被稱為多態,那是因為相同的方法可以在相似的接口上有著不同的實現。

除了集合,該框架也定義了幾個Map接口和類。Map裡存儲的是鍵/值對。儘管Map不是collections,但是它們完全整合在集合中。

集合接口

集合框架定義了一些接口。本節提供了每個接口的概述:

序號接口描述1Collection 接口
允許你使用一組對象,是Collection層次結構的根接口。2List 接口
繼承於Collection和一個 List實例存儲一個有序集合的元素。3Set
繼承於 Collection,是一個不包含重複元素的集合。4SortedSet
繼承於Set保存有序的集合。5Map
將唯一的鍵映射到值。6Map.Entry
描述在一個Map中的一個元素(鍵/值對)。是一個Map的內部類。7SortedMap
繼承於Map,使Key保持在升序排列。8Enumeration
這是一個傳統的接口和定義的方法,通過它可以枚舉(一次獲得一個)對象集合中的元素。這個傳統接口已被迭代器取代。集合類

Java提供了一套實現了Collection接口的標準集合類。其中一些是具體類,這些類可以直接拿來使用,而另外一些是抽象類,提供了接口的部分實現。

標準集合類匯總於下表:

序號類描述1AbstractCollection 
實現了大部分的集合接口。2AbstractList 
繼承於AbstractCollection 並且實現了大部分List接口。3AbstractSequentialList 
繼承於 AbstractList ,提供了對數據元素的鏈式訪問而不是隨機訪問。4LinkedList
繼承於 AbstractSequentialList,實現了一個鍊表。5ArrayList
通過繼承AbstractList,實現動態數組。6AbstractSet 
繼承於AbstractCollection 並且實現了大部分Set接口。7HashSet
繼承了AbstractSet,並且使用一個哈希表。8LinkedHashSet
具有可預知迭代順序的 Set 接口的哈希表和連結列表實現。9TreeSet
繼承於AbstractSet,使用元素的自然順序對元素進行排序.10AbstractMap 
實現了大部分的Map接口。11HashMap 
繼承了HashMap,並且使用一個哈希表。12TreeMap 
繼承了AbstractMap,並且使用一顆樹。13WeakHashMap 
繼承AbstractMap類,使用弱密鑰的哈希表。14LinkedHashMap 
繼承於HashMap,使用元素的自然順序對元素進行排序.15IdentityHashMap 
繼承AbstractMap類,比較文檔時使用引用相等。

在前面的教程中已經討論通過java.util包中定義的類,如下所示:

序號類描述1Vector 
Vector類實現了一個動態數組。和ArrayList和相似,但是兩者是不同的。2Stack 
棧是Vector的一個子類,它實現了一個標準的後進先出的棧。3Dictionary 
Dictionary 類是一個抽象類,用來存儲鍵/值對,作用和Map類相似。4Hashtable 
Hashtable是原始的java.util的一部分, 是一個Dictionary具體的實現 。5Properties 
Properties 繼承於 Hashtable.表示一個持久的屬性集.屬性列表中每個鍵及其對應值都是一個字符串。6BitSet
一個Bitset類創建一種特殊類型的數組來保存位值。BitSet中數組大小會隨需要增加。

一個Bitset類創建一種特殊類型的數組來保存位值。BitSet中數組大小會隨需要增加。

集合算法

集合框架定義了幾種算法,可用於集合和映射。這些算法被定義為集合類的靜態方法。

在嘗試比較不兼容的類型時,一些方法能夠拋出 ClassCastException異常。當試圖修改一個不可修改的集合時,拋出UnsupportedOperationException異常。

集合定義三個靜態的變量:EMPTY_SET EMPTY_LIST,EMPTY_MAP的。這些變量都不可改變。

序號算法描述1Collection Algorithms
這裡是一個列表中的所有算法實現。如何使用迭代器

通常情況下,你會希望遍歷一個集合中的元素。例如,顯示集合中的每個元素。

做到這一點最簡單的方法是採用一個迭代器,它是一個對象,實現了Iterator 接口或ListIterator接口。

迭代器,使你能夠通過循環來得到或刪除集合的元素。ListIterator繼承了Iterator,以允許雙向遍歷列表和修改元素。

這裡通過實例列出Iterator和listIterator接口提供的所有方法。

如何使用比較器

TreeSet和TreeMap的按照排序順序來存儲元素. 然而,這是通過比較器來精確定義按照什麼樣的排序順序。

這個接口可以讓我們以不同的方式來排序一個集合。

序號比較器方法描述1使用 Java Comparator
這裡通過實例列出Comparator接口提供的所有方法總結

Java集合框架為程式設計師提供了預先包裝的數據結構和算法來操縱他們。

集合是一個對象,可容納其他對象的引用。集合接口聲明對每一種類型的集合可以執行的操作。

集合框架的類和接口均在java.util包中。

福利資料:

0.JAVA面試視頻+題庫+筆試+簡歷模板     

1.java最新全套視頻學習資料(從入門到實戰項目)

2.最新全套完整Python視頻教程,學Python編程開發看它就夠了!直接下載

覺得本文對你有幫助?請分享給更多人!

關注「程式設計師寶庫」,提升編程技能!

▲長按圖片識別二維碼

謝謝老闆,點個 好看

相關焦點

  • Java集合類框架
    其實我們常用的集合框架完全能幫我們解決問題,但作為一個不安分的程式設計師,在閒下來之後總是想試著分析分析其它的。說幹就幹,首先我們先要把我們的一些集合框架列出來再分別介紹,一圖勝千言:         唉!作圖的天分實在是太差,湊合看吧。
  • 10年程序汪寫給方向迷茫的java程式設計師
    掌握常見java技術視頻裡已經有列哦幫小白總結幾條學習技術建議小白可能的問題1.Java框架太多了,到底公司主要用什麼框架啊?框架都學精力時間也不夠啊2.學習Java知識時哪些是重點啊?Java知識體系內容其實蠻多的,自己很浮躁天天不知道學什麼不知道從哪裡開始3.學了前面的知識,馬上又忘記了?
  • 【都給你總結好了!】你必須掌握的 21 個 Java 核心技術!
    面向對象編程的概念這是一個java的核心概念,對於任何java開發者都需要熟練掌握。Java中很多特性或者說知識點都是和java面向對象編程概念相關的。在我的理解,一個好的開發者不僅僅需要了解這些特性(知識點)本身。也更需要知道這些對象在java的面向對象編程概念中是如何體現出來的,這樣更有利於開發者掌握java這門開發語言,以及其他面向對象編程的語言。
  • Java程式設計師進階:Java4大核心基礎必備知識點
    本文總結了零基礎學習Java程式語言的幾個基礎知識要點。希望能夠對剛入門的Java新手有幫助。初學者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的,重在理解,理解它們之間的區別與聯繫,分別有哪些應用。想想這些代碼中用到了哪些知識點,不要一味地照著書本敲代碼,而不去理解。
  • Java集合框架學習
    java集合框架java常用集合框架簡單入門java集合框架是jdk提供的一種容器,
  • Java 程式設計師必讀的 9 本書
    來自:程式設計師書庫(ID:CodingBook)
  • 20K+ Java程式設計師必備的15個框架!
    那作為一名 Java Web 開發程式設計師必須需要熟悉哪些框架呢?今天,給大家列舉了一些通用的、必須掌握的框架,學會這些,20K+ 不是問題。毫無疑問,Spring 框架現在是 Java 後端框架家族裡面最強大的一個,其擁有 IOC 和 AOP 兩大利器,大大簡化了軟體開發複雜性。
  • 程式設計師怎樣提高編程速度?(親身經驗總結)
    對於大多數程式設計師來說,編代碼、敲代碼佔用了絕大多數工作時間。
  • java入門必備書籍
    本書深入介紹了Java編程的相關方面,全書內容覆蓋了Java的基本語法結構、Java的面向對象特徵、Java集合框架體系、Java泛型、異常處理、Java GUI編程、JDBC資料庫編程、Java注釋、Java的IO流體系、
  • 每個Java程式設計師都應掌握的 15 個框架,學會ta們月薪突破20k!
    今天,動姐就為大家列舉15個Java程式設計師通用的、必須掌握的框架,學會這些,月薪20K+ 應該不是問題。Spring Cloud 是一系列框架的有序集合,是目前最火熱的微服務框架首選,它利用Spring Boot 的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等
  • JAVA 集合框架之List接口之ArrayList
    以下是小猿畫的一個集合框架圖,僅供參考。首先,給大家講解一下什麼是集合框架。集合可以看作是一種容器,用來存儲對象信息。所有的集合類都位於 java.util 包下,主要是由兩大接口派生出來的:Collection 和 Map。但是,支持多線程的集合類位於 java.util.concurrent 包下。
  • 「核心基礎篇」Guide的Java後端書架來啦!都是Java程式設計師必看的書籍?
    《Java 並發編程之美》這本書還是非常適合我們用來學習 Java 多線程的。這本書的講解非常通俗易懂,作者從並發編程基礎到實戰都是信手拈來。Guide 自己開源的,涵蓋了 Java 後端方面的大部分知識點比如 集合、JVM、多線程還有資料庫 MySQL 等內容。在我的公眾號後臺回復 :「面試突擊」即可免費獲取。
  • Java初學者入門必須掌握4大核心基礎!
    很多Java編程初學者在剛接觸Java語言程序的時候,不知道該學習掌握哪些必要的基礎知識。本文小編總結了零基礎學習Java程式語言的幾個基礎知識要點。希望能夠對剛入門的Java新手有幫助。初學者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的,重在理解,理解它們之間的區別與聯繫,分別有哪些應用。想想這些代碼中用到了哪些知識點。不要一味地照著書本敲代碼。
  • Java 程式設計師必備的 15 個框架,前 3 個地位無可動搖!
    Java 程式設計師方向太多,且不說移動開發、大數據、區塊鏈、人工智慧這些,大部分 Java 程式設計師都是 Java Web/後端開發。那作為一名 Java Web 開發程式設計師必須需要熟悉哪些框架呢?今天,棧長我給大家列舉了一些通用的、必須掌握的框架,學會這些,20K+ 不是問題。
  • Java 集合框架看這一篇就夠了
    那麼這兩大接口的不同之處在於:就是單身狗放 Collection 裡面,couple 就放 Map 裡。(所以你屬於哪裡?學習這些集合框架,我認為有 4 個目標:對不同的場景,能夠選擇合適的數據結構並分析優缺點;關於 Map,之前那篇 HashMap 的文章已經講的非常透徹詳盡了,所以本文不再贅述。
  • Java基礎知識:集合之ArrayList
    其底層數據結構依然是數組,它實現了List<E>, RandomAccess, Cloneable, java.io.Serializable接口,其中RandomAccess代表了其擁有隨機快速訪問的能力,ArrayList可以以O(1)的時間複雜度去根據下標訪問元素。
  • 8個超實用的Java測試工具和框架
    Java測試工具下面是我精選的8個最棒的Java測試工具和框架。1.ArquillianArquillian是JVM一個高度創新性和可擴展的測試平臺,支持Java開發人員輕鬆創建自動化集合的,功能性的和驗收的測試。Arquillian允許在運行時間執行測試。
  • Java程式設計師必備的開發工具
    java是計算機應用程式程式語言,被廣泛用於創建Web應用、伺服器處理、用戶端的API開發乃至資料庫等多個領域。
  • 2016年7款最佳 Java 框架
    毫無疑問,java 是目前最為流行的程式語言之一,這裡我們挖掘出了一些比較受歡迎的框架的有效信息,它們可以減輕全球軟體開發人員的日常工作。
  • Java集合乾貨系列-集合總體大綱
    java提供的工具包,包含了常用的數據結構:集合、鍊表、隊列、棧、數組、映射等。Java集合工具包位置是java.util.*Java集合主要可以劃分為4個部分:List列表、Set集合、Map映射、工具類(Iterator迭代器、Enumeration枚舉類、Arrays和Collections)。Java集合工具包框架圖(如下):