java Collection

1.認識類集
如果想保存多個對象,通常使用對象數組完成,但是對象數組本身存在一個大問題----其數據的長度是不能更改的,所以以後採用了鏈表完成動態對象數組開發,在考慮開發時數據會頻繁地使用,所以引入了集類的概念,集類是一種動態的對象數組,屬於各個數據結構的實現類,整個集類的主要組成是一些核心的操作接口:Collection 、List、Set、Map、Iterator、Enumeration.

2.單值保存的最大符接口: Collection
所謂的單值保存指的是每一次操作只會保存一個對象,就好像之前鏈表程序一樣,每次只保存一個對象,在Collection接口中定義下面這些常用操作方法:
Collection接口中共定義了15個方法,在所有方法中,最常用的兩個方法爲:add()和iterator().不過從開發將,很少會直接使用Collection.

一般使用Collection的兩個子接口: List和Set.

List接口使用最多,所以在選擇時優先考慮List接口,而Set接口使用起來會有許多限制,所以只在必須使用時使用.
在這裏插入圖片描述

3.允許重複的子接口:List
List是Collection的一個最爲常用的子接口,這個接口的定義如下:

public interface List<E> extends Collection<E>

List接口直接繼承了Collection接口,但是List接口對Collection接口進行大量擴充,擴充後如下圖:
在這裏插入圖片描述
上面3個方法只是針對List接口起作用,List接口有兩個常用子類:ArrayList和Vector.

4.新的子類:ArrayList
ArrayList是List子接口使用最多的一個子類,此類定義如下.

public class ArrayList<E>
extends AbstractList<E>
implements List<E>,RandomAccess,Cloneable,Serializable

使用ArrayList進行List接口的功能驗證.
在List集合中可以存在重複數據,也可以正常保存,而且數據保存的順序就是存入數據的順序.
JKD1.7簡化
List all=new ArrayList<>();
在這裏插入圖片描述
通過Vector爲List接口實例化.
所有操作都是針對接口完成的,只要接口定義的方法不變,子類課意義更改
在這裏插入圖片描述
ArrayList和Vector的區別.
開發異步程序,首先ArrayList子類.
在這裏插入圖片描述
5.不允許重複的子接口:Set
set也是Collection較爲常見的子接口,這個接口定義:

public interface Set<E> extends Collection<E>

在Collection接口定義了15個方法,但是Set接口並不像List接口那樣對Collection接口進行了大量擴充,而是完整地繼承下來,就證明Set接口中肯定無法使用get()方法取得指定索引的數據的,那麼Set接口常用的兩個子類爲HashSet和TreeSet,下面進行說明.

5.1散裝存放的子類:HashSet
HashSet使用一種散列(無序)的方式保存集合數據,下面通過代碼觀察使用.
在使用Set集合保存數據時,通過輸出結果可以發現,集合中重複的數據並沒有被保存,而保存的數據也是無序的.
在這裏插入圖片描述

5.2排序存放的子類:TreeSet
如果希望Set集合中保存的數據有數據,那麼通過TreeSet進行Set接口實例化.
使用TreeSet保存數據.
我們可以發現集合中沒有重複數據,並且按照數據的大小順序保存數據了.
在這裏插入圖片描述
6.集合的輸出操作
前面都屬於單值集合的基本操作,集合還有一個最爲重要的問題就是如何進行集合內容的輸出操作,這個問題在java的類集框架給出4中輸出方式:Iterator、ListIterator、Enumeration和foreach.

迭代輸出:Iterator
Iterator是專門的迭代輸出接口,所謂的迭代輸出就是對元素進行判斷,判斷其是否有內容,如果有內容則把內容取出.
此接口在使用是也需要指定泛型,當然在此處指定的泛型最好與集合中的泛型一致,此接口定義3個方法.
在這裏插入圖片描述
怎麼取得Iterator接口實例化對象呢?這一操作在Collection接口就已經明確定義了,因爲Collection繼承一個Iterable接口,在這個接口中定義了"public Iterator irerator",方法,直接使用就可以了.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章