1、public e remove(int index) 方法,它的作用是:移除此列表中指定位置上的元素,向左移動所有後續元素(將其索引減 1)。其返回值是從列表中移除的元素。
演示**如下:
arraylistlist = new arraylist();
list.add("小明");
list.add("小花");
list.add("小強");
system.out.println(list.size());
system.out.println(list.get(0));
system.out.println(list.get(1));
system.out.println(list.get(2));
list.remove(1);
system.out.println(list.size());
system.out.println(list.get(0));
system.out.println(list.get(1));
輸出結果如下:
3
小明小花小強2
小明小強
2、public boolean remove(object o)方法,它的作用是:移除此列表中首次出現的指定元素(如果存在)。如果列表不包含此元素,則列表不做改動。其返回值為boolean型別(如果此列表包含指定的元素,則返回 true,否則返回false)。
演示**如下:
arraylistlist = new arraylist();
list.add("小明");
list.add("小花");
list.add("小強");
system.out.println(list.size());
system.out.println(list.get(0));
system.out.println(list.get(1));
system.out.println(list.get(2));
system.out.println(list.remove("小天"));//由於「小天不在列表中,故輸出結果為false」
list.remove("小花");//刪除「小花」元素
system.out.println(list.size());
system.out.println(list.get(0));
system.out.println(list.get(1));
輸出結果如下:
3
小明小花
小強false2小明
小強
1、讓我們先看看此方法的源**
public boolean remove(object o)
} else
}return false;
}
2、分析arraylist物件呼叫remove方法的執行過程
①arraylist物件呼叫remove方法會傳入乙個引數,引數會進行上轉型。
②我們來看方法體內主要部分的**(else語句塊),此語句塊作用是:遍歷列表中的元素,如果找到與引數物件相同的元素,列表就移除對應元素,返回true。
③在上一步的遍歷過程中,「相同」代表的是什麼含義呢?如若要弄明白其含義,我們來看一下上圖for迴圈中的equals方法。
④物件o呼叫了equals方法和列表中元素比較,那麼這個equals方法呼叫的是哪個類中的equals方法那?
⑤對於上圖**而言,由於我們傳入的物件o為string型別的物件,所以呼叫的方法是string類中的重寫object類中對應方法的equals方法(比較內容是否相同),我們來看一下string類中的equals方法才能理解得更加清楚。
public boolean equals(object anobject)
if (anobject instanceof string)
return true;}}
return false;
}
⑥所以上圖**的目的就是:通過remove方法移除列表中與傳入物件內容相同的元素,也就是移除列表中我們傳入的學生姓名。
⑦那如果我們傳入的物件o沒有重寫equals方法呢?還可以達到第⑥條所說的移除列表中與傳入物件內容相同的元素的目的嗎?
我們來看下面的**
public class person
arraylistlist = new arraylist();
list.add(new person("小明"));
list.add(new person("小花"));
list.add(new person("小強"));
system.out.println(list.size());
system.out.println(list.get(0));
system.out.println(list.get(1));
system.out.println(list.get(2));
system.out.println(list.remove(new person("小花")));
system.out.println(list.size());
system.out.println(list.get(0));
system.out.println(list.get(1));
system.out.println(list.get(2));
輸出結果如下:
3
date0426.person@7852e922
date0426.person@4e25154f
date0426.person@70dea4e
false
3date0426.person@7852e922
date0426.person@4e25154f
date0426.person@70dea4e
⑧通過輸出結果發現:我們並沒有達到刪除列表中「小花」元素的目的。原因是:remove方法的傳入的物件o沒有重寫equals方法,所以其比較的是位址。而我們傳入的物件o與新增的「小花」物件位址並不一樣,它們只是成員變數的名字一樣罷了。
⑨那我們怎麼實現第⑦條所說的目的呢?重寫object類中的equals方法。
我們來看如下**
public class person
@override
public boolean equals(object obj)
}
重寫equals方法後輸出結果如下
3
date0426.person@7852e922
date0426.person@4e25154f
date0426.person@70dea4e
true
2date0426.person@7852e922
date0426.person@70dea4e
⑩所以這樣就實現了第⑦條所說的目的了。 List的IndexOf方法和Remove方法
microsoft位址 list的indexof 方法 如果t是值型別的,就按照比較值的方法從列表的第乙個元素開始逐個匹配,如果t是引用型別,就比較引用是否相同 舉例如下 classa listlista newlist lista.add newa 3 lista.add newa 4 lista...
List的IndexOf方法和Remove方法
list的indexof 方法 如果t是值型別的,就按照比較值的方法從列表的第乙個元素開始逐個匹配,如果t是引用型別,就比較引用是否相同 舉例如下 class a listlista new list lista.add new a 3 lista.add new a 4 lista.add new...
Java中 List的遍歷
對list的遍歷有三種方式 listlist new arraylist list.add new a list.add new a 第一種 for iteratorit list.iterator it.hasnext 這種方式在迴圈 執行過程中會進行資料鎖定,效能稍差,同時,如果你想在迴圈過程中...