日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java集合(一)、什么是Java集合?

發(fā)布時間:2025/10/17 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java集合(一)、什么是Java集合? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、集合的由來

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

?

二、集合是什么?

  Java集合類存放在java.util包中,是一個用來存放對象的容器。

  注意:

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

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

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

?

三、Java集合框架

首先,我們來看一張圖

?

?

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

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

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

從圖中我們可以看到:

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

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

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

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

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

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

?

四、Iterator迭代器

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

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

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

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

所以除了map系列的集合,我么都能通過迭代器來對集合中的元素進行遍歷。

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

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

那這就得說明一下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 接口。所以只要實現(xiàn)了Iterable接口的類,就可以使用Iterator迭代器了。

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

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

import java.util.*;public class test{public static void main(String[] args) {// 產(chǎn)生一個List集合,典型實現(xiàn)為ArrayList。List<String> list = new ArrayList<String>();/* List list = new ArrayList();結(jié)果出錯注:test.java使用了未經(jīng)檢查或不安全的操作。注: 有關(guān)詳細信息, 請使用 -Xlint:unchecked 重新編譯。*這樣的情況下要用泛型,容器里不能放object而是放具體類型。*///添加三個元素list.add("Tom");list.add("Bob");list.add("Jack");//構(gòu)造List的迭代器Iterator it = list.iterator();//通過迭代器遍歷元素while (it.hasNext()){Object obj = it.next();System.out.println(obj);}} }

?

?五、Collection接口介紹

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

coolection的常規(guī)用法

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

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

比如:

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

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

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

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

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

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

?

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

  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()? 刪除所有元素

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

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

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

?

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

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

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

?

轉(zhuǎn)載于:https://www.cnblogs.com/lixiansheng/p/11348050.html

總結(jié)

以上是生活随笔為你收集整理的Java集合(一)、什么是Java集合?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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