假设我有这样一个ArrayList:
ArrayList<Integer> list = new ArrayList<Integer>();
添加操作后:
list.add(2);
list.add(3);
list.add(5);
list.add(7);
如果要删除number 2,我想删除
list.remove(2);
然后number 5将被删除,我该如何删除number 2?并且假设我不知道的索引number 2。
Answers:
尝试这个
list.removeAll(Arrays.asList(2));
它将删除所有值= 2的元素
你也可以用这个
list.remove(Integer.valueOf(2));
但它只会删除第一次出现的2
list.remove(2)不起作用,因为它匹配List.remove(int i)将删除具有指定索引的元素
方法有两种版本remove():
ArrayList#remove(Object)需要Object删除,并且ArrayList#remove(int)需要index删除。使用ArrayList<Integer>,删除一个整数值(例如2)作为索引,remove(int)与此完全匹配。它不会装箱2到Integer并扩大它。
一种解决方法是Integer显式获取对象,在这种情况下,与取消装箱相比,应首选加宽:
list.remove(Integer.valueOf(2));
我认为这是您想要的:带有get / remove方法的ArrayList <Integer>
list.remove(new Integer(2));
Integer.valueOf构造函数,因为它使用内部缓存来防止不必要的对象创建。
尝试这个:
list.remove(list.indexOf(2));
简单地说,如果您使用这样的方法,它将删除索引2处的元素
您的阵列列表:2,3,5,7
list.remove(2);
输出:2,5,7
如果使用这样的方法,它将删除值为2的元素
您的阵列列表:2,3,5,7
list.remove(Integer.valueOf(2));
输出:3,5,7
希望对您有帮助...