集合有 0 1 2 3 4 5 , 本来的意图是去除0 1 2 ;
Set<Integer> set = new HashSet<Integer>();
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 6; i++) {
set.add(i);
list.add(i);
}
for (int i = 0; i < 3; i++) {
set.remove(i);
list.remove(i);
}
System.out.println("removed set: "+set.toString());
System.out.println("removed list: "+list.toString());
------解决方案--------------------
for (int i = 0; i < 3; i++) {
set.remove(i);
list.remove(0); //你指的有意思,是在说此处?
}
------解决方案--------------------

这样输出就很明显了
------解决方案--------------------

做了一些修改,可以了。
如果你要删除set,或者list里面的元素,最好用string座位其类型,这样不容易让JVM搞混淆了。
list.remove(i);//因为你要删除的是int,而jvm不知道你需要删除的是值.
在jdk中是这么定义remove方法的:
\\\\\\\jvm将你的意思理解成了下面这种\\\\\\\\\
public E remove(int index)
移除此列表中指定位置上的元素。向左移动所有后续元素(将其索引减 1)。
**********************实质上你想用的是下面这样的***********************
public boolean remove(Object o)
移除此列表中首次出现的指定元素(如果存在)。
如果列表不包含此元素,则列表不做改动。
更确切地讲,移除满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引的元素(如果存在此类元素)。
如果列表中包含指定的元素,则返回 true(或者等同于这种情况:如果列表由于调用而发生更改,则返回 true)。
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Created by Administrator on 2014/8/13.
*/
public class Test {
public static void main(String[] args) {
Set<Integer> set = new HashSet<Integer>();
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 6; i++) {
set.add(i);
list.add(i);
}
System.out.println("removed set: "+set.toString());
System.out.println("removed list: "+list.toString());
for (int i = 0; i < 3; i++) {
System.out.println("----------- set: "+set.toString());
System.out.println("------------ list: "+list.toString());
set.remove(i);
list.remove(new Integer(i));
/*
list.remove(i);//因为你要删除的是int,而jvm不知道你需要删除的是值.
在jdk中是这么定义remove方法的:
\\\\\\\jvm将你的意思理解成了下面这种\\\\\\\\\
public E remove(int index)
移除此列表中指定位置上的元素。向左移动所有后续元素(将其索引减 1)。
**********************实质上你想用的是下面这样的***********************
public boolean remove(Object o)
移除此列表中首次出现的指定元素(如果存在)。
如果列表不包含此元素,则列表不做改动。