集合介紹
本節(jié)介紹Java集合框架,在這里,你將了解集合是什么以及它們?nèi)绾问鼓愕墓ぷ鞲p松、程序更好,你將了解構(gòu)成Java集合框架的核心元素 — 接口、實(shí)現(xiàn)、聚合操作和算法。
集合 — 有時(shí)稱為容器 — 只是一個(gè)將多個(gè)元素組合到一個(gè)單元中的對(duì)象,集合用于存儲(chǔ)、檢索、操作和傳遞聚合數(shù)據(jù)。通常,它們代表形成自然組的數(shù)據(jù)項(xiàng),例如撲克牌(卡片集合)、郵件文件夾(信件集合)或電話目錄(名稱到電話號(hào)碼的映射),如果你使用過(guò)Java編程語(yǔ)言 — 或者幾乎任何其他編程語(yǔ)言 — 你已經(jīng)熟悉了集合。
什么是集合框架集合框架是用于表示和操作集合的統(tǒng)一體系結(jié)構(gòu),所有集合框架都包含以下內(nèi)容:
接口:這些是表示集合的抽象數(shù)據(jù)類型,接口允許獨(dú)立于其表示的細(xì)節(jié)來(lái)操縱集合,在面向?qū)ο笳Z(yǔ)言中,接口通常形成層次結(jié)構(gòu)。
實(shí)現(xiàn):這些是集合接口的具體實(shí)現(xiàn),實(shí)質(zhì)上,它們是可重用的數(shù)據(jù)結(jié)構(gòu)。
算法:這些是對(duì)實(shí)現(xiàn)集合接口的對(duì)象執(zhí)行有用計(jì)算(如搜索和排序)的方法,算法被認(rèn)為是多態(tài)的:也就是說(shuō),相同的方法可以用于適當(dāng)?shù)募辖涌诘脑S多不同實(shí)現(xiàn),實(shí)質(zhì)上,算法是可重用的功能。
除了Java集合框架之外,最著名的集合框架示例是C++標(biāo)準(zhǔn)模板庫(kù)(STL)和Smalltalk的集合層次結(jié)構(gòu),從歷史上看,集合框架相當(dāng)復(fù)雜,這使得它們難以學(xué)習(xí),我們相信Java集合框架打破了這一傳統(tǒng),因?yàn)槟銓⒃诒菊轮凶詫W(xué)。
Java集合框架的優(yōu)點(diǎn)Java集合框架提供以下好處:
減少編程工作量:通過(guò)提供有用的數(shù)據(jù)結(jié)構(gòu)和算法,集合框架可以讓你專注于程序的重要部分,而不是使其工作所需的低級(jí)“設(shè)施”,通過(guò)促進(jìn)不相關(guān)API之間的互操作性,Java集合框架使你無(wú)需編寫適配器對(duì)象或轉(zhuǎn)換代碼來(lái)連接API。
提高程序速度和質(zhì)量:此集合框架提供有用的數(shù)據(jù)結(jié)構(gòu)和算法的高性能、高質(zhì)量實(shí)現(xiàn),每個(gè)接口的各種實(shí)現(xiàn)是可互換的,因此可以通過(guò)切換集合實(shí)現(xiàn)來(lái)輕松調(diào)整程序,因?yàn)槟銢]有編寫自己的數(shù)據(jù)結(jié)構(gòu)的苦差事,所以你將有更多的時(shí)間用于改進(jìn)程序的質(zhì)量和性能。
允許不相關(guān)的API之間的互操作性:集合接口是API來(lái)回傳遞集合的術(shù)語(yǔ),如果我的網(wǎng)絡(luò)管理API提供了一組節(jié)點(diǎn)名稱,并且你的GUI工具包需要一組列標(biāo)題,那么我們的API將無(wú)縫地互操作,即使它們是獨(dú)立編寫的。
減少學(xué)習(xí)和使用新API的工作量:許多API自然地在輸入上收集集合并將它們作為輸出提供,過(guò)去,每個(gè)這樣的API都有一個(gè)專門用于操作其集合的小型子API,這些ad hoc集合子API之間幾乎沒有一致性,因此你必須從頭開始學(xué)習(xí)每一個(gè),并且在使用它們時(shí)很容易出錯(cuò),隨著標(biāo)準(zhǔn)集合接口的出現(xiàn),問(wèn)題就消失了。
減少設(shè)計(jì)新API的工作量:這是之前的優(yōu)勢(shì)的另一面,設(shè)計(jì)人員和實(shí)施人員每次創(chuàng)建依賴于集合的API時(shí)都不必重新發(fā)明輪子,相反,他們可以使用標(biāo)準(zhǔn)的集合接口。
促進(jìn)軟件重用:符合標(biāo)準(zhǔn)集合接口的新數(shù)據(jù)結(jié)構(gòu)本質(zhì)上是可重用的,對(duì)于實(shí)現(xiàn)這些接口的對(duì)象進(jìn)行操作的新算法也是如此。
下一篇:集合接口文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73073.html
Java? 教程 Java教程是為JDK 8編寫的,本頁(yè)面中描述的示例和實(shí)踐沒有利用在后續(xù)版本中引入的改進(jìn)。 Java教程是希望使用Java編程語(yǔ)言創(chuàng)建應(yīng)用程序的程序員的實(shí)用指南,其中包括數(shù)百個(gè)完整的工作示例和數(shù)十個(gè)課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識(shí)的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購(gòu)買。 入門 介紹Java技術(shù)和安裝Java開發(fā)軟件并使用...
集合接口 核心集合接口封裝了不同類型的集合,如下圖所示,這些接口允許獨(dú)立于其表示的細(xì)節(jié)來(lái)操縱集合,核心集合接口是Java集合框架的基礎(chǔ),如下圖所示,核心集合接口形成層次結(jié)構(gòu)。 showImg(https://segmentfault.com/img/bVbntJW?w=402&h=146); Set是一種特殊的Collection,SortedSet是一種特殊的Set,依此類推,另請(qǐng)注意,層次結(jié)構(gòu)...
高級(jí)并發(fā)對(duì)象 到目前為止,本課程重點(diǎn)關(guān)注從一開始就是Java平臺(tái)一部分的低級(jí)別API,這些API適用于非?;A(chǔ)的任務(wù),但更高級(jí)的任務(wù)需要更高級(jí)別的構(gòu)建塊,對(duì)于充分利用當(dāng)今多處理器和多核系統(tǒng)的大規(guī)模并發(fā)應(yīng)用程序尤其如此。 在本節(jié)中,我們將介紹Java平臺(tái)5.0版中引入的一些高級(jí)并發(fā)功能,大多數(shù)這些功能都在新的java.util.concurrent包中實(shí)現(xiàn),Java集合框架中還有新的并發(fā)數(shù)據(jù)結(jié)構(gòu)。 ...
以下是Java技術(shù)棧微信公眾號(hào)發(fā)布的關(guān)于 Java 的技術(shù)干貨,從以下幾個(gè)方面匯總。 Java 基礎(chǔ)篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進(jìn)階篇 Java 新特性篇 Java 工具篇 Java 書籍篇 Java基礎(chǔ)篇 8張圖帶你輕松溫習(xí) Java 知識(shí) Java父類強(qiáng)制轉(zhuǎn)換子類原則 一張圖搞清楚 Java 異常機(jī)制 通用唯一標(biāo)識(shí)碼UUID的介紹及使用 字符串...
Set接口 Set是一個(gè)不能包含重復(fù)元素的Collection,它模擬了數(shù)學(xué)集抽象,Set接口僅包含從Collection繼承的方法,并添加禁止重復(fù)元素的限制,Set還為equals和hashCode操作的行為添加了一個(gè)更強(qiáng)的契約,允許Set實(shí)例有意義地進(jìn)行比較,即使它們的實(shí)現(xiàn)類型不同,如果兩個(gè)Set實(shí)例包含相同的元素,則它們是相等的。 Java平臺(tái)包含三個(gè)通用的Set實(shí)現(xiàn):HashSet、Tre...
閱讀 1806·2021-11-15 11:37
閱讀 3122·2021-11-04 16:05
閱讀 1940·2021-10-27 14:18
閱讀 2773·2021-08-12 13:30
閱讀 2511·2019-08-29 14:18
閱讀 2105·2019-08-29 13:07
閱讀 2056·2019-08-27 10:54
閱讀 2746·2019-08-26 12:15