大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線(xiàn):400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 什么是Java集合?

什么是Java集合?

更新時(shí)間:2021-05-17 16:18:57 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽965次

一、集合的由來(lái)

通常,我們的Java程序需要根據(jù)程序運(yùn)行時(shí)才知道創(chuàng)建了多少個(gè)對(duì)象。但若非程序運(yùn)行,程序開(kāi)發(fā)階段,我們根本不知道到底需要多少個(gè)數(shù)量的對(duì)象,甚至不知道它的準(zhǔn)確類(lèi)型。為了滿(mǎn)足這些常規(guī)的編程需要,我們要求能在任何時(shí)候,任何地點(diǎn)創(chuàng)建任意數(shù)量的對(duì)象,而這些對(duì)象用什么來(lái)容納呢?我們首先想到了數(shù)組,但是!數(shù)組只能存放同一類(lèi)型的數(shù)據(jù),而且其長(zhǎng)度是固定的,那怎么辦了?集合便應(yīng)運(yùn)而生了。

二、集合是什么?

Java集合類(lèi)存放在java.util包中,是一個(gè)用來(lái)存放對(duì)象的容器。

注意:

1.集合只能存放對(duì)象。比如你存入一個(gè)int型數(shù)據(jù)66放入集合中,其實(shí)它是自動(dòng)轉(zhuǎn)換成Integer類(lèi)后存入的,Java中每一種基本數(shù)據(jù)類(lèi)型都有對(duì)應(yīng)的引用類(lèi)型。

2.集合存放的都是對(duì)象的引用,而非對(duì)象本身。所以我們稱(chēng)集合中的對(duì)象就是集合中對(duì)象的引用。對(duì)象本身還是放在堆內(nèi)存中。

3.集合可以存放不同類(lèi)型,不限數(shù)量的數(shù)據(jù)類(lèi)型。

三、Java集合框架

首先,我們來(lái)看一張圖

發(fā)現(xiàn)一個(gè)特點(diǎn),上述所有的集合類(lèi),除了map系列的集合,即左邊的集合都實(shí)現(xiàn)了Iterator接口。

Iterator是一個(gè)用來(lái)遍歷集合中元素的接口,主要有hashNext(),next(),remove()三種方法。

它的子接口ListIterator在它的基礎(chǔ)上又添加了三種方法,分別是add(),previous(),hasPrevious()。

從圖中我們可以看到:

1.集合主要分為Collection和Map兩個(gè)接口。

2.Collection又分別被List和Set繼承。

3.List被AbstractList實(shí)現(xiàn),然后分為3個(gè)子類(lèi),ArrayList,LinkList和VectorList。

4.Set被AbstractSet實(shí)現(xiàn),又分為2個(gè)子類(lèi),HashSet和TreeSet。

5.Map被AbstractMap實(shí)現(xiàn),又分為2個(gè)子類(lèi),HashMap和TreeMap。

6.Map被Hashtable實(shí)現(xiàn)。

四、Iterator迭代器

它是Java集合的頂層接口(不包括map系列的集合,Map接口是map系列集合的頂層接口)

Object next():返回迭代器剛越過(guò)的元素的引用,返回值是Object,需要強(qiáng)制轉(zhuǎn)換成自己需要的類(lèi)型。

boolean hasNext():判斷容器內(nèi)是否還有可供訪(fǎng)問(wèn)的元素。

void remove():刪除迭代器剛越過(guò)的元素。

所以除了map系列的集合,我么都能通過(guò)迭代器來(lái)對(duì)集合中的元素進(jìn)行遍歷。

注意:我們可以在源碼中追溯到集合的頂層接口,比如Collection接口,可以看到它繼承的是類(lèi)Iterable

public interface Collection<E> extends Iterable<E> {
    //Query Operations
    ...
}

那這就得說(shuō)明一下Iterator和Iterable的區(qū)別:

Iterable:存在于java.util包中。

public interface Iterable<T>{
    /**
    * Returns an iterator over elements of type {@code T}
    *
    * @return an Iterator
    */
    Iterator<T> iterator();
    ...
}

我們可以看到,里面封裝了Iterator接口。所以只要實(shí)現(xiàn)了Iterable接口的類(lèi),就可以使用Iterator迭代器了。

Iterator:存在于java.util包中。核心的方法next(),hasNext(),remove()。

這里我們引用一個(gè)Iterator的實(shí)現(xiàn)類(lèi)ArrayList來(lái)看一下迭代器的使用:暫時(shí)先不管List集合是什么,只需要看看迭代器的用法就行了

import java.util.*;

public class test{
    public static void main(String[] args) {
        // 產(chǎn)生一個(gè)List集合,典型實(shí)現(xiàn)為ArrayList。
        List<String> list = new ArrayList<String>();
        /* List list = new ArrayList();結(jié)果出錯(cuò)
        注:test.java使用了未經(jīng)檢查或不安全的操作。
        注: 有關(guān)詳細(xì)信息, 請(qǐng)使用 -Xlint:unchecked 重新編譯。
         *這樣的情況下要用泛型,容器里不能放object而是放具體類(lèi)型。
         */

        //添加三個(gè)元素
        list.add("Tom");
        list.add("Bob");
        list.add("Jack");
        //構(gòu)造List的迭代器
        Iterator it = list.iterator();
        //通過(guò)迭代器遍歷元素
        while (it.hasNext()){
            Object obj = it.next();
            System.out.println(obj);
        }
    }
}

五、Collection接口介紹

Collection的作用就是規(guī)定了一個(gè)集合有哪些基本的操作。

coolection的常規(guī)用法

Collection c = new ArrayList();
Iterator it = c.iterator();
while (it.hasNext()){
    Object obj = it.next();
}

這里主要是插入數(shù)據(jù),清空數(shù)據(jù),是否包含,是否相等,集合里的數(shù)據(jù)個(gè)數(shù)和轉(zhuǎn)化成熟組這幾種操作。

比如:

int size() 獲取元素個(gè)數(shù)

boolean isEmpty() 是否個(gè)數(shù)為零

boolean contains(Object element) 是否包含指定元素

boolean add(E element) 添加元素,成功時(shí)返回true

boolean remove(Object element) 刪除元素,成功時(shí)返回true

Iterator<E> iterator() 獲取迭代器

還有些操作整個(gè)集合的方法,比如:

boolean containsAll(Collection<?> c)  是否包含指定集合 c 的全部元素

boolean addAll(Collection<? extends E> c) 添加集合 c 中所有的元素到本集合中,如果集合有改變就返回 true

boolean removeAll(Collection<?> c) 刪除本集合中和 c 集合中一致的元素,如果集合有改變就返回 true

boolean retainAll(Collection<?> c)  保留本集合中 c 集合中兩者共有的,如果集合有改變就返回 true

void clear()  刪除所有元素

還有對(duì)數(shù)組操作的方法:

Object[] toArray() 返回一個(gè)包含集合中所有元素的數(shù)組

<T> T[] toArray(T[] a) 返回一個(gè)包含集合中所有元素的數(shù)組,運(yùn)行時(shí)根據(jù)集合元素的類(lèi)型指定數(shù)組的類(lèi)型

于Collection接口相關(guān)還有一個(gè)抽象類(lèi)AbstractCollection:

AbstractCollection是一個(gè)抽象類(lèi),實(shí)現(xiàn)了Collection接口的部分功能,實(shí)現(xiàn)了一些最基本的通用操作,把復(fù)雜的和業(yè)務(wù)相關(guān)的延遲到子類(lèi)實(shí)現(xiàn)。

在AbstractCollection中,主要實(shí)現(xiàn)了contains(), isEmpty(), toArray(), remove(), clear() 這幾個(gè)操作。

以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"什么是Java集合?",希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為您服務(wù)。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 女人十八一级毛片 | 一区二区视频在线观看免费的 | 99久久爱re热6在播放 | 日韩视频在线一区 | 国产资源在线播放 | 国产亚洲一区二区三区在线观看 | 奇米福利视频 | 亚洲精品综合久久中文字幕 | 色综合网亚洲精品久久久 | 色老头成人免费视频天天综合 | www.黄网站 | 国产日韩在线 | 夜夜资源| 精品无人区乱码1区2区3区免费 | 精品视频在线免费播放 | 久久亚洲精品人成综合网 | 羞羞视频在线观看 | 香蕉免费看一区二区三区 | 久久77| 亚洲高清专区 | 九九99 | 国产精品久久久久久久网站 | 97国内精品久久久久久久影视 | 欧美综合影院 | 国产1区2区3区在线观看 | 玖玖福利| 亚洲欧美日韩中文字幕在线一 | 亚洲色婷婷综合开心网 | 久久综合久久自在自线精品自 | 久久精品亚洲一区二区 | 国产精品美女视频 | 九色综合久久综合欧美97 | 久热国产在线视频 | 四虎影视大全 | 九九热伊人 | a成人毛片免费观看 | 91精品免费久久久久久久久 | 午夜精品久久久久久久第一页 | 亚洲成人网在线观看 | 国产视频久久久 | 在线500福利视频国产 |