forjavaremove
⑴ java for 冒號 remove
這個問題關鍵在於抄obList是什麼類型的
舉個例子說吧
obList為int型數組,如下
int obList[] = {1, 2, 3, 4, 5, 6, 7, 8};
for(int ob:obList){
if(ob == 3){
obList.remove(ob);
}
}
obList為String的List,如下
List<String> obList= new ArrayList<String>();//泛型也可以是其他類型
obList.add("1");
obList.add("2");
obList.add("3");
obList.add("4");
for(String ob:obList){
int ob1 = Integer.parseInt(ob);
if(ob1 == 3){
obList.remove(ob1);
}
}
關鍵在於obList的類型,當然也可以使用其他類型,但是如果是if(ob == 3)這種判斷是要牽扯到強制轉換。
有什麼問題Hi我吧@~!good luck~!
⑵ java for循環生成的對象,如何批量刪除
從你給的代碼中可以看出,五次循環中,new出的對象都是賦值給了mod這個變數,結束循環,mod的值就是最後一次new出的對象,你通過mod自然只能刪除最後一個new出的對象,不管你調用mod.remove()多少次。
想要全部刪除,這就要看你是否有對「5次循環中前4次生成的那些對象」的引用,比如放在了一個數組或者容器中,如果有,就可以遍歷數組或者容器來刪除,否則你無法刪除,因為你都沒有對它們的引用。
如果還需幫助,你可以把全部的代碼粘貼出來看看~
⑶ java remove問題
方法一:循環元素刪除
// 刪除ArrayList中重復元素
public static void removeDuplicate(List list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println(list);
}
方法二:通過HashSet剔除
// 刪除ArrayList中重復元素
public static void removeDuplicate(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);
}
方法三: 刪除ArrayList中重復元素,保持順序
// 刪除ArrayList中重復元素,保持順序
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println( " remove plicate " + list);
}
⑷ java中list.remove方法使用
ArrayList下的remove方法:
public boolean remove(Object o)
移除此列表中首次出現的指定元素(如果存在)。如果列表不包含此元素,則列表不做改動。更確切地講,移除滿足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引的元素(如果存在此類元素)。如果列表中包含指定的元素,則返回 true(或者等同於這種情況:如果列表由於調用而發生更改,則返回 true)。
因為int是object的子類,所以可以傳入int類型參數來刪除.
-----------------------------------------------------------
public E remove(int index)
移除此列表中指定位置上的元素。向左移動所有後續元素(將其索引減 1)。
也可以循環找出要刪除的數的下標然後這個方法刪除
⑸ Java容器類裡面的remove()方法的用法
其實你可以想下,你要從一個容器中移除一個東西,你說你是不是要想判斷下這個容器中是不是由這個東西,有才能移除,沒有移除肯定失敗啊
這是remove方法的源碼:
public boolean remove(Object o) {
if (o == null) {
for (int index = 0; index < size; index++)
if (elementData[index] == null) {
fastRemove(index);
return true;
}
} else {
for (int index = 0; index < size; index++)
if (o.equals(elementData[index])) { //看這
fastRemove(index);
return true;
}
}
return false;
}
⑹ 為什麼java不要在foreach循環里進行元素的remove/add操作
foreach循環是建立在迭代器的基礎之上的,迭代器能夠有效工作的前提是集合內的元素專保持不屬變,既不能增加也不能刪除,如果直接對集合進行增加和刪除,會導致迭代器中的內容與集合的內容產生差異,從而導致錯誤發生。
可以使用迭代器的remove,能夠保證正常工作。
如果存在疑問建議查看List類或者HashMap類的源碼。
⑺ JAVA中LISt遍歷時如何remove元素
可以將需要remove的元素的index存數組或者list,循環結束之後remove掉
⑻ java 迭代器是如何進行remove 的,能否詳細的回答一下。
for each語句是由iterator實現的,正如你所說,他們的不同之處就在於remove()方法上。
一般調用刪除方法都是集合的方法,例如:
List list = new ArrayList();
list.add(...);
list.remove(...);
但是,如果在循環的過程中調用集合的remove()方法,就會導致循環出錯,例如:
for(int i=0;i<list.size();i++){
list.remove(...);
}
循環過程中list.size()的大小變化了,就導致了錯誤。
所以,如果你想在循環語句中刪除集合中的某個元素,就要用迭代器iterator的remove()方法,因為它的remove()方法不僅會刪除元素,還會維護一個標志,用來記錄目前是不是可刪除狀態,例如,你不能連續兩次調用它的remove()方法,調用之前至少有一次next()方法的調用。
如果你想了解的更透徹,可以查看一下原碼,看它是怎麼實現的。
因為for each語句是由iterator語句實現的,所以如果你在循環中刪除某個元素時,應該用iterator的remove()方法,可是這時你又沒有iterator對象,怎麼調用呢?
所以,這種情況下,一般還是用iterator來循環訪問,並篩選刪除。
說白了,for each就是為了讓用iterator循環訪問的形式看著更好看,寫起來更方便。但如有刪除操作,當然還是用它原來的形式了。
⑼ java中remove怎麼使用
1在對集合進行迭代的時候刪除其中的元素最好使用迭代器Iterator的remove方法進行刪除
Iterator ite=list.iterator();
while(ite.hasNext()){
Object o=ite.next();
if(/*
此處寫你希望滿足的刪除條件
*/)
ite.remove();
}
2 不能在對一個List進行遍歷的時候將其中的元素刪除掉解決辦法是你可以先將要刪除的元素用另一個list裝起來等遍歷結束再remove掉
List delList = new ArrayList();//用來裝需要刪除的元素
for(Information ia:list)
if(ia.getId()==k){
n++;
delList.add(ia);
}
list.removeAll(delList);//遍歷完成後執行刪除
3 這里的for循環沒有涉及到迭代器,也就沒有對集合是否發生改變進行判斷,所以不會拋出異常
for(int i=0;i<list.size();i++){
String str=list.get(i);
if("bbb".equals(str)){
list.remove(str); }
}
望點贊