1. 程式人生 > >Java:容器(基本知識)

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