1. 程式人生 > >java基礎--迭代器、ArrayList與LinkedList、去重方法的解析

java基礎--迭代器、ArrayList與LinkedList、去重方法的解析

一.集合中的一些方法

1.addAll
將指定的集合中的所有元素都新增到該集合中
與add的區別:add是將指定集合作為一個元素新增進去。
2.removeAll
刪除此集合與指定集合中元素的交集
3.retainAll
保留此集合與指定集合中元素的交集
注意:這三種方法都有boolean型別的返回值,如果呼叫該方法的集合發生改變,則返回true,反之,則返回false。

二.迭代器

主要作用:遍歷集合
//從集合中獲取迭代器
Iterator iterator = c.iterator();
//判斷是否有下一個元素
boolean rel = iterator.hasNext();
System.out.println(rel);
//如果有下一個元素
if (rel) {
//獲取集合中的元素
Object next = iterator.next();
System.out.println(next);
}
實現的方法
實際上,集合內部有一個指標,當使用迭代器呼叫hasNext方法時,會判斷下一個位置是否為空,如果不為空,則迭代器將呼叫Next方法將指標向下移一位,並獲取該位置元素。

三.List中特有的幾個方法

1.add(int index,Object obj)
在指定位置新增元素,注意不能超過集合的size

2.set(index,obj)
替換該角標位置的元素
3.get(int index)
獲取該角標對應的元素
4.remove(int index)
刪除對應角標的元素,並返回該元素

四.List特有的迭代器

ListIterator方法
當想通向集合中新增元素並通過迭代器遍歷時,如果直接使用迭代器遍歷,會出現ConcurrentModificationException併發修改異常,這時候應該通過list中的ListIterator新增元素方法,就能避免異常。

五.去重方法解析

去重方法的核心語句是if(!list.contains()),所以核心方法是contains方法,而這個方法的核心是通過呼叫Object的equals方法,而這個方法比較的是物件的地址,但使用去重方法是一般會建立一個新的物件來存放去重後的集合,所以地址必然不一樣,所以會去重失敗。
所以需要我們根據實際需求重寫equals方法來進行去重。

六.ArrayList與LinkedList

ArrayList陣列實現
查詢快 增刪慢
LinkedList連結串列實現
查詢慢 增刪塊