1. 程式人生 > >【Java基礎】 (List、Set、Map、Stack、Queue)總結

【Java基礎】 (List、Set、Map、Stack、Queue)總結

1、引入背景
如果一個程式只包含固定數量的且其生命週期都是已知的物件,那麼這是一個非常簡單的程式,而在通常情況下程式總在執行時才知道某些條件去建立物件,所以就不能通過建立命名的引用來持有每一個物件,因為你不知道這樣的物件有多少個,java中有多種方案來儲存物件的引用,下面就將介紹容器類來解決這樣的問題。

2、Collection容器
其代表一個獨立的元素序列,這些元素都遵循一條或者多條規則。

2.1、List
List可以將元素維持在特定序列中,常見的子類實現有

ArrayList   快速查詢,插入刪除效率低
LinkedList 快速插入刪除、查詢效率低

2.2、Set


用來儲存不重複的元素,常用的實現有

HashSet  
TreeSet 用於對結果進行排序。

2.3、Stack
由於stack在當初設計時候有缺陷,所以現在不建議使用stack,如果要使用棧這種資料結構,建議使用LinkedList,LinkedList能夠直接實現棧的所有功能和方法,所以建議使用LinkedList.

2.4、Queue
佇列是一種先進先出的容器,LinkedList實現了queue介面,所以可以通過向下轉型來通LinkedList構造queue

Queue<Integer> queue= new LinkedList<Integer
>();

其類圖關係如下:
這裡寫圖片描述

3、Map容器
Map。一組成對的“鍵值對”物件,允許你使用鍵查詢值。
常用實現有

HashMap   效率高、執行緒不安全(常用)
Hashtable 效率低、執行緒安全
TreeMap   用於排序

其類圖關係如下:

4、Iterator 和iterable區別
Iterator是迭代器類,而Iterable是介面。
引入迭代器這個物件的目的是為了從一個collection或者Map的物件中取資料,而不必關心取資料的具體底層實現,如在List中add()和get()分別是插入元素和取出元素,而在Map中put(),才是插入元素,迭代器是一個物件,其目的是遍歷和取出序列中的物件。而客戶端程式設計師不必知道該序列底層是通過Set、List還是Map實現。
Iterator的功能:

1、使用iterator()方法要求返回一個iterator
2、使用next() 獲得序列中下一個元素
3、使用hasNext()檢查序列中是否還有元素
4、使用remove刪除迭代器新近返回的元素

用法如下:

List<integer> list= new ArrayList<Integer>();

Iterator<Integer> it=list.iterator();

而對於iterable,任何實現iterable介面的類都可以使用迭代器進行遍歷。

5、Collection和Collections區別
java.util.Collection 是一個集合介面。它提供了對集合物件進行基本操作的通用介面方法。Collection介面在Java 類庫中有很多具體的實現。

java.util.Collections 是一個包裝類。它包含有各種有關集合操作的靜態多型方法。此類不能例項化,就像一個工具類,服務於Java的Collection框架。