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); }
}
望点赞