持有對象

持有對象


一、Collection接口

1.ArrayList與LinkedList:基本點ArrayList,擅長隨機訪問元素,但是在List的中間插入和移除元素時比較慢;LinkedList,能以低代價在List的中間進行插入和移除操作,提供了優化的順序訪問,但在隨機訪問元素是比較慢。


2.關於ArrayList的一些方法:

1)remove():移除某個元素。

2)contains():確定某個對象是否在列表中。

3)indexOf():返回某個元素在List集合在位置的索引編號。

4)subList():截取List集合中的某一段,如subList(1,4)。

5)retainAll():比較兩個List集合中的元素,保留交集。

6)removeAll():移除List集合中所有元素。


3.關於LinkedList的一些方法:

1)getFirst()和element():返回列表第一個元素,不會移除它,如果爲空會拋出NoSuchElementException。

2)peek():返回列表第一個元素,但是當列表爲空時返回null。

3)removeFirst ()和remove():移除並返回列表的第一個元素,如果列表爲空拋出NoSuchElementException。

4)poll():移除並返回列表的第一個元素,列表爲空則返回null。

5)addFirst()、add()和addLast():都將某個元素插入到列表的尾部。

6)removeLast():移除並返回列表最後一個元素。


4.Stack棧

“棧”通常指“後進先出”(LIFO),即第一個壓入元素最後纔會彈出,如手槍彈夾。同時LinkedList具有直接實現棧所有功能的方法。

public class LinkedListStack<T>{
    private LinkedList<T> listStack = new LinkedList<>();
    //壓棧
    public void push(T t){
        listStack.addFirst(t);
    }
    //取棧
    public T peek(){
        return listStack.getFirst();
    }
    public T pop(){return listStack.removeFirst();}
    public boolean empty(){return listStack.isEmpty();}
}

5.Set

Set不保存重複元素,Set集合具有與Collection完全一樣的接口。Set最常被用於判斷某元素是否在Set集合中,因此通常會選擇使用HashSet,能夠實現快速查找。Set集合有:HashSet能夠實現快速查找,使用散列函數;TreeSet可對集合內部排序,採用紅-黑樹數據結構存儲;LinkedHashList採用散列。


二、Queue與PriorityQueue

Queue隊列是一個典型的先進先出(FIFO)容器,即從容器的一端放入事物,從另一端取出,並且事物放入容器的順序與取出的順序是相同的。


PriorityQueue優先隊列,隊列按照一定的規則來取出當前優先級最高的元素。PriorityQueue中的offer()方法可用於插入一個元素,使用默認的排序來對元素排序;peek()、poll()和remove()方法,獲取的元素都是隊列中優先級最高的元素;Collection.reverseOrder()可產生反序的Comparator。


三、迭代器

迭代器是一個對象,它的工作是遍歷並選擇序列中的對象,迭代器通常被稱爲輕量級對象:創建它的代價小。但是iterator只能單向移動:

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

Iterator<Demo> it = demo.iterator();
while(it.hasNext()){
    Demo d = it.next();
    it.remove();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章