日期:2014-05-20  浏览次数:20894 次

java list集合移除元素问题,有经验的朋友指点下。
Java code

public static void main(String[] args) throws IOException {
        List<Integer> list = new ArrayList<Integer>();
        list.add(100);
        list.add(101);
        list.add(102);
        list.add(103);
        
        //删除集合中102元素。
        list.remove(102);
    }


如上代码,一个装整型的list集合。
需求:从该集合中移除某个整型元素。
条件:只提供该整型元素的值(无法获取正确的索引值)。
怎么实现?


------解决方案--------------------
Java code

import java.util.List;
import java.util.ArrayList;
import java.io.IOException;

/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 2011-9-26
 * Time: 21:56:13
 * To change this template use File | Settings | File Templates.
 */
public class Remove {

    
public static void main(String[] args) throws IOException {
        List<Integer> list = new ArrayList<Integer>();
        list.add(100);
        list.add(101);
        list.add(102);
        list.add(103);

        //删除集合中102元素。
        list.remove(new Integer(102));
         for(int i:list){
            System.out.println(i); 
         }
    }

}

------解决方案--------------------
Java code

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        List<Integer> list = new ArrayList<Integer>();
        list.add(100);
        list.add(101);
        list.add(102);
        list.add(103);
        for (Integer e : list) {
            System.out.println(e);
        }
        // 删除集合中102元素。
        list.remove(list.indexOf(102));
        System.out.println("==================");
        for (Integer e : list) {
            System.out.println(e);
        }
    }

}

------解决方案--------------------
remove传进的参数是Object类型和int类型两个重载函数
int的是索引 Object是删除对象
你传一个整型会认为是int 像一楼那样才是Object的
------解决方案--------------------
List集合里面存放的是Integer
可以将int转化为封装类
然后利用List的remove(Object o)方法
注意:如果List集合里面存放的是自己定义的类(MyClass)时,在利用remove方法的时候,需要确保MyClass已经 override equals和hashCode方法。


------解决方案--------------------
2楼和1楼的正确,2楼是获取102的索引,在remove,这样就是根据索引删除list中的值。
1楼,是将remove中obj类型转换成Integer类型。
------解决方案--------------------
//删除集合中102元素。
for(int i = 0; i<list.size();i++){
 
if(list.get(i).equals(102)){
list.remove(i);
}
System.out.println(list);
//List<Integer> list1 = (List)obj; 
//System.out.println(list1);
}