【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框架。

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