1. 程式人生 > >Java 集合之List 集合的刪除方法順序分析以及remove和removeAll區別

Java 集合之List 集合的刪除方法順序分析以及remove和removeAll區別

在上一篇 《Java 集合之List 集合的新增方法順序分析以及add和addAll區別》中已經分析過

對於List集合順序從前到後的分析論證,這裡將不再詳細分析 remove()方法的順序

此篇將就 remove()和removeAll()的區別分析

java的 List 集合中 使用 remove 刪除元素,同時集合的 size 會發生變化

一、remove()方法:

語法1  remove(Object element)刪除名為 element 的元素

語法2  remove(int index)刪除集合索引 index 處的元素

接下來用一個例子 看 使用 remove(Object element

)方法和remove(int index)帶下標的方法後集合的順序改變

public class TestList {

public static void main(String args[]) { // 結果: Hello Learn

List list = new ArrayList();

list.add("Hello");

list.add("World");

list.add("Hello");

list.add("Learn"); // 到此為止若遍歷則輸出 Hello World Hello Learn



list.remove("Hello"); // 1 到此為止若遍歷則輸出 World Hello Learn

list.remove(0); // 2 上一步執行後 下標為0 處的是 World 故這步移除world



for (int i = 0; i < list.size(); i++) { // 輸出結果

System.out.print(list.get(i)+" ");

}

}

}

因為 List集合的元素的存入順序是從頭開始。

1 處程式碼 list.remove( "Hello" ) 執行後, remove掉的 Hello 是 第一個新增 的元素 Hello 、原先第二個新增的 Hello 不受影響。

此時當前集合中元素的第一位變成了 World,

故 2 處的程式碼利用帶下標方法 list.remov( 0 ) 執行後將刪除當前集合中下標為 0 的元素 ,World 被移除。

輸出結果為:

                         

注意 remove(Object element)方法只在當前集合中按順序移除一個元素。即使後邊還有 與 element 相同的元素。也不再刪除

二、removeAll()方法 

注意removeAll()中沒有帶下標的方法

語法   removeAll(collection c)刪除集合索引 index 處的元素  

這裡新增一個新的 list2 集合。將之前的 list 集合新增到 list2 中

public class TestList {

public static void main(String args[]) {

List list = new ArrayList();

list.add("Hello");

list.add("World");

list.add("Hello");

list.add("Learn"); // 到此為止若遍歷 list 輸出 Hello World Hello Learn



System.out.println("-----list的輸出結果-----");

for (int i = 0; i < list.size(); i++) {

System.out.print(list.get(i)+" ");

}



List list2 = new ArrayList();

//測試區,這是開始位置



list2.add(list); // 1



//這是結束位置,以下測試程式碼將代入到這塊區域中



System.out.println("\n-----list2的輸出結果-----");

for (int i = 0; i < list2.size(); i++) {

System.out.print(list2.get(i)+" ");

}

System.out.println("\nlist2的長度為:"+list2.size());

}

}

輸出結果為:

1 處程式碼通過 add()方法將 list 新增到 list2 集合中,注意add()方法加入的長度為1 ,
即把此前的 list 當做一個元素集合來處理,並且以陣列形式顯示,(上篇中已提到)

此時在1 處程式碼之後寫上一行 remove 方法的程式碼

測試區程式碼:

    list2.remove(0);

此時 list2 中的元素下標為 0 的第一位元素將刪除,即 list2 中沒有元素

輸出結果:

       

若將上邊 1 處之後程式碼改為 

     list2.remove(list2);

輸出結果:

結果和最初的程式碼結果沒有變化,list2.remove(list2) 程式碼不起作用。 remove()方法中沒有刪除集合物件的方法

以上程式碼行 改為:

    list2.removeAll(list2);

執行結果:

  

刪除成功,因為removeAll()方法中引數為 集合物件。

同理,利用 addAll()方法將 list 新增到 list2 中 ,即 1 1處程式碼改為

      list2.addAll(list);

之後加入程式碼行  

      list2.removeAll(list2);

執行結果同上圖執行結果。

若將 list2.addall(list) 後的程式碼行改為

      list2.remove(list2);

執行結果同最初,該行程式碼仍然不起作用

因此得出結論。remove()方法不能刪除傳入的集合物件。

即括號引數只能是  remove(Object element)和 remove(int index)

而  removeAll()方法中引數只能是 一個集合物件 。而不能是 一個元素名稱 

如  list.removeAll("Hello"); 提示錯誤 。不被允許輸入。

如果想刪除list裡所有資料  則呼叫clear()方法