摘要:說到復(fù)盤基礎(chǔ),并不是所有的都會(huì)復(fù)盤,沒那個(gè)時(shí)間更沒那個(gè)必要。比如,一些基礎(chǔ)的語法以及條件語句,極度簡單。思前想后,我覺得整個(gè)計(jì)劃應(yīng)該從集合開始,而復(fù)盤的方式就是讀源碼。通常,隊(duì)列不允許隨機(jī)訪問隊(duì)列中的元素。
?
老讀者都知道,我是自學(xué)轉(zhuǎn)行到 java 的。那時(shí)迫于生存壓力,學(xué)得比較快,很多知識(shí)點(diǎn)僅停留在會(huì)用的層面。最近,光會(huì)用不知道原理,沒什么意思。每次使用時(shí)都是機(jī)械性的 "熟練使用"。加之一直有回歸基礎(chǔ)的想法,所以想在業(yè)余時(shí)間復(fù)盤 java 的基礎(chǔ)知識(shí)。知其然知其所以然是技術(shù)人的追求。
說到復(fù)盤基礎(chǔ),并不是所有的都會(huì)復(fù)盤,沒那個(gè)時(shí)間更沒那個(gè)必要。比如,一些基礎(chǔ)的語法以及條件語句,極度簡單。這類是不需要復(fù)盤的。思前想后,我覺得整個(gè)計(jì)劃應(yīng)該從集合開始,而復(fù)盤的方式就是讀源碼。
1、Java 為什么要有集合?首先,java 是一門面向?qū)ο笳Z言,操作對(duì)象是我們的日常。既然操作就需要有東西把對(duì)象存儲(chǔ)起來。于是容器就應(yīng)運(yùn)而生,初學(xué)者接觸到的第一個(gè)容器就是數(shù)組,但這遠(yuǎn)遠(yuǎn)不夠,根據(jù)不同的對(duì)象以及不同的業(yè)務(wù),我們需要用到不同的容器。比如,不想要重復(fù)對(duì)象,我們就會(huì)想到用 set 容器,想要對(duì)象有序我們會(huì)用 List 。不管是 List、Set。他們都會(huì)有共性,?而 java 就根據(jù)這些共性,給我們提供了 Collection 集合。
2、Collection?接口框架圖由上面的 Collection 接口框架圖,我們可以知道 Collection 是 List、Set、Queue 的父接口,看到這里,你們可能會(huì)問,Map 哪去了?其實(shí),Java 中的容器,包括 Collection 和 Map ,Map 是另外一個(gè)體系,所以我們今天先不講 Map 。
3、Collection 的方法Collection 接口定義了以上待實(shí)現(xiàn)的方法。比如:
size() 計(jì)算容器長度
isEmpty() 是否為空
contains()?是否包含某個(gè)對(duì)象
containsAll()?是否包含另一個(gè)集合的所有對(duì)象
iterator()?上層接口?iterable 的方法,用于生成迭代對(duì)象,遍歷對(duì)象
add() 添加一個(gè)對(duì)象
add() 添加另一個(gè)集合的所有對(duì)象
remove() 移除一個(gè)對(duì)象
removeAll()?移除所有對(duì)象
toArray() 把集合轉(zhuǎn)換成數(shù)組
retainAll()?是否與另一個(gè)集合有交集
4、List 子接口List 集合的特點(diǎn)是元素有序、可重復(fù),它包含了 ArrayList、Vendor 和 LinkedList 這三個(gè)實(shí)現(xiàn)類。三者比較如下:
5、Set 子接口Set 集合最大的特點(diǎn)是不允許重復(fù)元素,它有 HashSet、TreeSet、LinkedHashSet 、EnumSet 四個(gè)實(shí)現(xiàn)類,對(duì)比如下:
至于EnumSet 類,我還沒研究過怎么使用,在網(wǎng)上查了下,它是專為枚舉類設(shè)計(jì)的集合類,EnumSet 中的所有元素都必須是指定枚舉類型的枚舉值,具體的這里先不做介紹,待我研究下用法以及場(chǎng)景,再專門介紹。
6、Queue 子接口Queue 用的不多,它常用于模擬隊(duì)列這種數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn) FIFO 等數(shù)據(jù)結(jié)構(gòu)。通常,隊(duì)列不允許隨機(jī)訪問隊(duì)列中的元素。在工作中,我還沒有使用過,待我研究過,再來跟大家分享。
推薦閱讀:1、java | 什么是動(dòng)態(tài)代理
2、SpringBoot?| 啟動(dòng)原理
3、SpringBoot | 自動(dòng)配置原理
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76008.html
摘要:單線程集合本部分將重點(diǎn)介紹非線程安全集合。非線程安全集合框架的最新成員是自起推出的。這是標(biāo)準(zhǔn)的單線程陣營中唯一的有序集合。該功能能有效防止運(yùn)行時(shí)造型。檢查個(gè)集合之間不存在共同的元素。基于自然排序或找出集合中的最大或最小元素。 【編者按】本文作者為擁有十年金融軟件開發(fā)經(jīng)驗(yàn)的 Mikhail Vorontsov,文章主要概覽了所有標(biāo)準(zhǔn) Java 集合類型。文章系國內(nèi) ITOM 管理平臺(tái) O...
摘要:不相等的對(duì)象要具有不相等的哈希碼為了哈希表的操作效率,這一點(diǎn)很重要,但不是強(qiáng)制要求,最低要求是不相等的對(duì)象不能共用一個(gè)哈希碼。方法和方法協(xié)同工作,返回對(duì)象的哈希碼。這個(gè)哈希碼基于對(duì)象的身份生成,而不是對(duì)象的相等性。 本文面向 剛學(xué)完Java的新手們。這篇文章不講語法,而是一些除了語法必須了解的概念。 將要去面試的初級(jí)工程師們。查漏補(bǔ)缺,以免遭遇不測(cè)。 目前由于篇幅而被挪出本文的知識(shí)...
集合接口 核心集合接口封裝了不同類型的集合,如下圖所示,這些接口允許獨(dú)立于其表示的細(xì)節(jié)來操縱集合,核心集合接口是Java集合框架的基礎(chǔ),如下圖所示,核心集合接口形成層次結(jié)構(gòu)。 showImg(https://segmentfault.com/img/bVbntJW?w=402&h=146); Set是一種特殊的Collection,SortedSet是一種特殊的Set,依此類推,另請(qǐng)注意,層次結(jié)構(gòu)...
摘要:當(dāng)使用迭代器訪問集合元素時(shí),中的元素不能被改變,只能通過的方法刪除上一次方法返回的集合元素才可以否則將會(huì)引發(fā)異常。可以確保集合元素處于有序狀態(tài)。返回中所有鍵值對(duì)組成的視圖,每個(gè)集合元素都是是的內(nèi)部類對(duì)象。這種集合稱為視圖。 1.集合概覽 集合包括兩大接口:Collection 和 Map。 Map TreeMap HashMap LinkedHashMap Collecti...
前言 聲明,本文使用的是JDK1.8 從今天開始正式去學(xué)習(xí)Java基礎(chǔ)中最重要的東西--->集合 無論在開發(fā)中,在面試中這個(gè)知識(shí)點(diǎn)都是非常非常重要的,因此,我在此花費(fèi)的時(shí)間也是很多,得參閱挺多的資料,下面未必就做到日更了... 當(dāng)然了,如果講得有錯(cuò)的地方還請(qǐng)大家多多包涵并不吝在評(píng)論去指正~ 一、集合(Collection)介紹 1.1為什么需要Collection Java是一門面向?qū)ο蟮恼Z言,...
閱讀 1339·2019-08-30 15:44
閱讀 1391·2019-08-29 18:42
閱讀 446·2019-08-29 13:59
閱讀 782·2019-08-28 17:58
閱讀 2822·2019-08-26 12:02
閱讀 2424·2019-08-23 18:40
閱讀 2413·2019-08-23 18:13
閱讀 3115·2019-08-23 16:27