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

歡迎訪問 生活随笔!

生活随笔

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

java 顶层类_Javase之集合体系之(1)集合顶层类Collection与其迭代器知识

發(fā)布時間:2025/4/16 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 顶层类_Javase之集合体系之(1)集合顶层类Collection与其迭代器知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

集合體系之集合頂層類Collection與其迭代器知識

集合的由來:Java是一門面向?qū)ο笳Z言,而面向?qū)ο笳Z言對事物的描述是通過對象體現(xiàn)的,為了方便對多個對象進(jìn)行操作,就必須把多個對象進(jìn)行存儲,而要存儲多個對象,就不能是一個基本變量,而應(yīng)該是一個容器類型的變量,在容器以前的內(nèi)容中,只有數(shù)組和StringBuffer是容器類型。但StringBuffer的結(jié)果是一個字符串。故只能使用數(shù)組,即對象數(shù)組。但對象數(shù)組因?yàn)殚L度固定,不能適應(yīng)變化的需求。所以Java提供集合類。

集合與數(shù)組的區(qū)別

1.集合的長度可變,而數(shù)組長度固定。

2.數(shù)組存儲了一類元素,集合可以存儲不同類型的元素。

3.數(shù)組即可存儲基本類型數(shù)據(jù),又可存儲引用類型數(shù)據(jù)。但集合只能存儲引用類型。

Colection(接口)

集合的頂層接口,其子體系有重復(fù)的,有唯一的,有無序的,有有序的。

主要子接口有兩個:

?|–List

?有序(存儲與取出順序不一致),可重復(fù)。

?|–Set

?無序(存儲順序與取出順序不一致,但它有內(nèi)在的存儲順序該順序通過哈希表生成,有時在輸入時可能與其內(nèi)在順序相同,但之并不代表其有序,多輸入幾個數(shù)據(jù)就會發(fā)現(xiàn)其無序性),唯一。

?

Collection的功能概述

添加功能

boolean add(E e):添加一個元素

boolean addAll(Collection extends E> c):添加一個集合的元素

刪除功能

void clear():移除所有元素

boolean remove(Object o):collection 中移除指定元素的單個實(shí)例

boolean removeAll(Collection> c):移除一個集合的對象(只要有一個被移除就返回true)

判斷功能

boolean contains(Object o):判斷集合是否包含指定元素

boolean containsAll(Collection> c);判斷集合是否包含指定的集合元素(包含所有才叫包含)

boolean isEmpty():判斷集合是否為空

獲取功能

Iterator iterator():生成一個迭代器對象,從而迭代訪問每個元素

長度功能

int size():元素個數(shù)

交集功能

boolean retainAll(Collection> c):刪除集合中,在c集合中不存在的元素

解釋:假定有A,B兩個集合

A,B做交集,最終結(jié)果存放在A中,B不變

返回值表示A是否發(fā)生變化。

把集合轉(zhuǎn)換為數(shù)組

toArray

Object[] toArray()

Iterator(接口)

對 collection 進(jìn)行迭代的迭代器。

是遍歷集合的一種方式,迭代器依賴于集合存在

迭代器定義為接口的原因:

?假定迭代器是一個類,那么我們就可以創(chuàng)建該類對象并調(diào)用方法來實(shí)現(xiàn)集合的遍歷,但是Java中有許多的集合類,而這些集合類的數(shù)據(jù)結(jié)構(gòu)不同,所以存儲和遍歷的方式是不同的。進(jìn)而它們的遍歷方式不同,所以沒有定義迭代器類。

?而無論是哪種集合,都具備獲取元素的操作,而且最好在輔助于判斷功能,這樣在獲取前,先判斷就不容易出錯,所以判斷功能和獲取功能應(yīng)該是一個集合遍歷所具備的,而每種集合的遍歷方式不同。所以就把兩種功能提取出來,而不提供具體實(shí)現(xiàn),這就是迭代器聲明為接口的原因。

?迭代器真正的實(shí)現(xiàn)類在具體的子類中,以內(nèi)部類的方式實(shí)現(xiàn)。

因?yàn)镃ollection類實(shí)現(xiàn)了Iterable而Iterable中

hasNext

boolean hasNext():如果仍有元素可以迭代,則返回 true。

(換句話說,如果 next 返回了元素而不是拋出異常,則返回 true)。

next

E next():返回迭代的下一個元素。

remove

void remove():從迭代器指向的 collection 中移除迭代器返回的最后一個元素(可選操作)。

每次調(diào)用 next 只能調(diào)用一次此方法。如果進(jìn)行迭代時用調(diào)用此方法之外的其他方式修改了該迭代器

所指向的 collection,則迭代器的行為是不確定的。

拋出:

UnsupportedOperationException - 如果迭代器不支持 remove 操作。

IllegalStateException - 如果尚未調(diào)用 next 方法,或者在上一次調(diào)用 next 方法之后已經(jīng)

調(diào)用了 remove 方法。

迭代器使用的兩種方式

while

通過迭代器的hasNext()和next()方法實(shí)現(xiàn)

import java.util.ArrayList;

import java.util.Collection;

import java.util.Iterator;

public class t3 {

public static void main(String[] args) {

Collection c = new ArrayList();

c.add("hello");

c.add("world");

c.add("java");

Iterator it = c.iterator();

while (it.hasNext()){

String s = it.next();

System.out.println(s);

}

}

}

out:

hello

world

java

增強(qiáng)for循環(huán)

import java.util.ArrayList;

import java.util.Collection;

import java.util.Iterator;

public class t3 {

public static void main(String[] args) {

Collection c = new ArrayList();

c.add("hello");

c.add("world");

c.add("java");

for (String s:c){

System.out.println(s);

}

}

}

out:

hello

world

java

二者作用相同

總結(jié)

以上是生活随笔為你收集整理的java 顶层类_Javase之集合体系之(1)集合顶层类Collection与其迭代器知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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