日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

java api 框架_java常用对象API之集合框架

發(fā)布時(shí)間:2023/11/27 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java api 框架_java常用对象API之集合框架 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

說(shuō)到集合框架,其實(shí)剛開(kāi)始學(xué)的時(shí)候有點(diǎn)自我感覺(jué)很簡(jiǎn)單,自己認(rèn)為就是集合類(lèi)中的框架之類(lèi)的,但是當(dāng)自己簡(jiǎn)單把它過(guò)了一變后發(fā)現(xiàn)懵里懵懂的,什么都沒(méi)懂,于是自己又認(rèn)認(rèn)真真的看了一遍,才弄明白。

說(shuō)到集合框架就不得不說(shuō)集合類(lèi),集合類(lèi)的由來(lái)是什么呢?簡(jiǎn)單的說(shuō)就是對(duì)象用于封裝特有數(shù)據(jù),對(duì)象多了需要存儲(chǔ),如果對(duì)象的個(gè)數(shù)不確定,那么就是用集合容器進(jìn)行存儲(chǔ)。

集合類(lèi)的特點(diǎn):

用于存儲(chǔ)對(duì)象的容器;

集合的長(zhǎng)度是可變的;

集合中不可以存儲(chǔ)基本數(shù)據(jù)類(lèi)型值。

集合容器因?yàn)閮?nèi)部的數(shù)據(jù)結(jié)構(gòu)不同,有多重具體容器,不斷的向上抽取,就形成了集合框架。

框架的頂層就是Collection接口。

Collection的常見(jiàn)方法:

1.添加:

boolean add(Object obj);

boolean addAll(Collection coll);

2.刪除:

boolean remove(Object obj);

boolean removeAll(Collection coll);//刪除所有元素

void clear();//清空整個(gè)集合

3.判斷:

boolean contains(Object obj);

boolean containsAll(Collection coll);

boolean isEmpty();//判斷集合中是否有元素。

4.獲取:

int size();

Iterator iterator();//專(zhuān)門(mén)用于取出集合中元素的方式(迭代器)

該對(duì)象必須依賴(lài)于具體容器,因?yàn)槊恳粋€(gè)容器的數(shù)據(jù)結(jié)構(gòu)都不同。所以該迭代器對(duì)象是在容器中進(jìn)行內(nèi)部實(shí)現(xiàn)的。對(duì)于使用容器者而言,具體的實(shí)現(xiàn)不重要,只要通過(guò)容器獲取到該實(shí)現(xiàn)的迭代器的對(duì)象即可,也就是iterator方法。

★Iterator接口就是對(duì)所有的Collection容器進(jìn)行元素取出的公共接口。

5.其他:

boolean retainAll(Collection coll);取交集。你手里有1.2.3 我手里有2.4.5,取交集就是2

Object[] toArray();//將集合轉(zhuǎn)成數(shù)組

然后Collection下面有兩個(gè)重要的接口

List:有序(存入和取出的順序一致),元素都有索引(角標(biāo)),元素可以重復(fù)的。

Set:元素不能重復(fù)。

而我們常用的還是List這個(gè)接口

List:特有的常見(jiàn)方法:有一個(gè)共性特點(diǎn)就是都可以操作角標(biāo)。

1.添加

void add(index,element);

void add(index,collection);

2.刪除

Object remove(index);

3.修改

Object set(index,element);

4.獲取

Object get(index);

int indexOf(object);

int lastIndexOf(object);

List subList(form,to);

list:集合是可以完成對(duì)元素的增刪改查。

List:

|–Vector:內(nèi)部是數(shù)組數(shù)據(jù)結(jié)構(gòu),是同步的。(幾乎不用了…老版本的)增刪,查詢(xún)都很慢。

|–ArrayList:內(nèi)部是數(shù)組數(shù)據(jù)結(jié)構(gòu),是不同步的。替代了Vector。查詢(xún)的速度快。

|–LinkedList:內(nèi)部是鏈表數(shù)據(jù)結(jié)構(gòu),是不同步的。 增刪元素的速度很快。

LinkedList:

addFist();

addLast();

jdk1.6升級(jí)

offerFirst();

offerLast();

getFist();//獲取但不移除,如果鏈表為空,拋出NoSuchElementException

getLast();

jdk1.6升級(jí)

peekFirst();//獲取但不移除,如果鏈表為空,返回null

peekLast();

removeFirst();//獲取并移除,如果鏈表為空,拋出NoSuchElementException

removeLast();

jdk1.6升級(jí)

pollFirst();//獲取并移除,如果鏈表為空,返回null

pollLast();

Set:元素不可以重復(fù),是無(wú)序。

Set接口中的方法和Collection一致。

|–HashSet:內(nèi)部數(shù)據(jù)結(jié)構(gòu)是哈希表 ,是不同步的。

如何保證該集合的元素唯一性呢?

是通過(guò)對(duì)象的hashCode和equals方法來(lái)完成對(duì)象唯一性的。

如果對(duì)象的hashCode值不同,那么不用判斷equals方法,就直接存儲(chǔ)到哈希表中。

如果對(duì)象的hashCode值相同,那么要再次判斷對(duì)象的equals方法是否為true。

如果為true,視為相同元素,不存。如果為false,那么視為不同元素,就進(jìn)行存儲(chǔ)。

記住:如果元素要存儲(chǔ)到HashSet集合中,必須覆蓋hashCode方法和equals方法。

一般情況下,如果定義的類(lèi)會(huì)產(chǎn)生很多對(duì)象,比如人,學(xué)生,書(shū),通常都需要覆蓋equals,hashCode方法。

建立對(duì)象判斷是否相同的依據(jù)。

|–TreeSet:可以對(duì)Set集合中的元素進(jìn)行排序。是不同步的。

判斷元素唯一性的方式:就是根據(jù)比較方法的返回結(jié)果是否是0,是0,就是相同元素,不存。

TreeSet對(duì)元素進(jìn)行排序的方式一:

讓元素自身具備比較功能,元就需要實(shí)現(xiàn)Comparable接口。覆蓋compareTo方法。

如果不要按照對(duì)象中具備的自然順序進(jìn)行排序。如果對(duì)象中不具備自然順序。怎么辦?

可以使用TreeSet集合第二種排序方式二:

讓集合自身具備比較功能,定義一個(gè)類(lèi)實(shí)現(xiàn)Comparator接口,覆蓋compare方法。

將該類(lèi)對(duì)象作為參數(shù)傳遞給TreeSet集合的構(gòu)造函數(shù)。

總結(jié)

以上是生活随笔為你收集整理的java api 框架_java常用对象API之集合框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。