Java:容器(基本知識)
容器基本的型別有:List, Set, Map, Queue。他們都是物件型別,也策劃能夠為集合類。Java中使用Collection來命名他們,故稱之為容器。
Collection:獨立元素的序列,List 按照插入的順序儲存元素,Set 不能有重複元素,Queue 按照排隊規則(先進先出)來儲存元素。
Map:儲存鍵值對物件,允許按鍵來查詢值。
容器可以自動的調整自身的尺寸。
List:
有兩種型別的List :Arraylist , Linkedlist
ArrayList:可以自動給擴充自身尺寸的陣列,add()插入物件,get() 訪問這些物件,size() 得到當前陣列的大小。
ArrayList<型別引數> :其中型別引數可以有多個, 沒有尖括號的時候,是使用Java泛型來建立類,比較複雜,所以一般使用帶有尖括號的型別引數來預定義,在List中,可以使用foreach來訪問每一個元素。
LinkedList :降低插入和刪除的代價,增加隨機訪問的代價。
contains()-- 確定某個物件是否在List 中。 remove() 移除 。equals() 。subList() 允許從較大的List 中建立一個片段 。
retainAll()
迭代器:Iterator Iterator<Pets> it = lists.iterator(); Pets a = it.next(); it.hasNext();
ListIterator 只能用於訪問各種List ,比Iterator 更加強大。
LinkedList:
刪除插入增強,隨機訪問比ArrayList 變弱。增加使其用做棧,佇列或者雙端佇列的方法。
Stack:後進先出(LIFO)
push() 接受T型別的物件
peek() 返回棧頂元素 pop() 返回棧頂元素並且移除它。
Set: 不儲存重複元素,主要用在查詢某個物件是否存在於某個Set 中,查詢在Set 中比較重要,因此可以考慮構造HashSet ,他專門對查詢做了優化。實際上Set 就是Collection ,只是行為不同。
Map:
Map< Person, List<? extends Pet>> petPeople = new HashMap <Person ,List<? extends Pet>>();
print(petPeople.keySet()); print(petPeople.values());
for(Person person : petPeople.keySet()){
for(Pet pet : petPeople.get(person)){
print(pet);
}}
Queue: 先進先出(FIFO)
offer() 將一個元素插入隊尾OR 返回false ;
peek() 和element() 在不移除的情況下返回隊頭元素,不同: 若佇列為空,peek() 返回null, element() 丟擲異常。
poll() 和 remove() 移除並且返回隊頭,不同: 若佇列為空 , poll() 返回null, remove() 丟擲異常。
自動包裝機制會改變一些物件的型別來適應Queue 所需要的型別。
優先順序佇列:PriorityQueue