想问一下,是不是调用一次remove 方法最多只删除1个元素呢??
有没有可能删除2个以上的元素?

解决方案 »

  1.   

    有一个继承的 removeAll()方法...
      

  2.   

    不是我的意思是说,不用removeAll方法,假如只用remove方法,是不是最多只删除一个元素
      

  3.   

    嗯..只能删一个..不过你可以利用iterator 去遍历数组.. 遍历的时候 找到相同的就remove掉就好了.  可以实现一次删除多个..remove(Object o) 
              如果指定元素存在于此集合中,则将其移除。
      

  4.   

    算了,我举个例子吧import java.util.*;
    /**
     * @author super
     *
     */
    public class TestDeleteFromHashSet { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub Set<SomeElement> set = new HashSet<SomeElement>();
    SomeElement so1 = new SomeElement(1);
    SomeElement so2 = new SomeElement(2);
    set.add(so1);
    set.add(so2);
    //显示set中的所有元素
    System.out.println("起始状态");
    Iterator it = set.iterator();
    while(it.hasNext()){
    System.out.print(it.next());
    }
    System.out.println();

    //现在将so2改成和so1相等
    System.out.println("将so2改成和so1相等");
    so2.setInt(1);
    Iterator it2 = set.iterator();
    while(it2.hasNext()){
    System.out.print(it2.next());
    }
    System.out.println();

    //现在删除set中与so1相等的元素
    System.out.println("现在删除set中与so1相等的元素");
    set.remove(so1);
    Iterator it3 = set.iterator();
    while(it3.hasNext()){
    System.out.print(it3.next());
    }
    System.out.println();
    }}class SomeElement{
    private int i;
    public SomeElement(int i){
    this.i = i;
    }
    public int hashCode(){
    return i;
    }
    public boolean equals(Object o){
     return i== ( (SomeElement)o).i;
    }
    public String toString(){
    return "[SomeElement,i= "+i+"]";
    }
    public void setInt(int i){
    this.i=i;
    }
    }输出结果是
    起始状态
    [SomeElement,i= 2][SomeElement,i= 1]
    将so2改成和so1相等
    [SomeElement,i= 1][SomeElement,i= 1]
    现在删除set中与so1相等的元素
    [SomeElement,i= 1]

    我想问,正如红色部分显示,为什么只删除了1个元素?
      

  5.   

    so1是对象..你删除的是 so1这个对象..而不是 对象的值是1的所有对象..由于总共有两个 对象..所以你删除了一个 .. 还有第二个so2.. 剩下的就是.so2
      

  6.   

    其实我有何尝不想。。不过我一朋友在备考SCJP,我就在帮助他。。其实我自己也有很多不懂,一遇到题目就XX了,最后鄙视下我的另外一个“高手”朋友,告诉我的东西全是错的。。
      

  7.   

    发现考SCJP的好多人是一点基础都没有的,郁闷啊
      

  8.   

    还有考的很多的都是细节问题,比如一个题目
    for(Iterator i:new ArrayList().iteraor){}
    错,因为foreach语句只能用于数组和实现了iterable接口的对象