在不使用迭代器的情况下能删除存在集合内的对象吗?
如:Set set=new HashSet();使用set.remove();删除对象,而不使用iter.remove()。import java.util.*;public class TestSet {

public static void main(String[] args) {
Person p1 = new Person(1, "per1", "male");
Person p2 = new Person(2, "per2", "male");
Person p3 = new Person(3, "per3", "male");
Person p4 = new Person(4, "per4", "male");
Person p5 = new Person(5, "per5", "male");
Person removePerson = new Person(4, null, null);
Set set = new HashSet();
set.add(p1);
set.add(p2);
set.add(p3);
set.add(p4);
set.add(p5);
Iterator iter = set.iterator();
System.out.println("利用集合的remove():方法删除:");  System.out.println("利用迭代器的remove()方法删除:");
 Iterator iter2=set.iterator();
 while (iter2.hasNext()) {
 Person person = (Person) iter2.next();
 if (person.equals(removePerson)) {
 iter2.remove();
 }
 }
 System.out.println(set);
 System.out.println(set.size());
}
}class Person {
int id; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} String name, sex; public Person(int id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
} @Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", sex=" + sex + "]";
} public boolean equals(Object obj) {
if (obj == null) {
return false;
} if (obj instanceof Person) {
Person tempPerson = (Person) obj;
if (this.id == tempPerson.id) {
return true;
}
}
return false; } public int hashCode() {
return this.name.hashCode();
}}

解决方案 »

  1.   


    删除单个:
    set.remove(p1);全删:
    set.clear();
      

  2.   

    我这问的是怎么在不使用迭代器的情况下找到和removePerson的Id相同的对象,然后使用set.remove()方法删除?
      

  3.   

    这里使用迭代器后再使用set.remove()方法会出现快速失败异常....
      

  4.   

    Iterator iter2=set.iterator();
             while (iter2.hasNext()) {
             Person person = (Person) iter2.next();
             if (person.equals(removePerson)) {
             set.remove(person);
             }
             }
      

  5.   


    package com.xuz.csdn.nov24;import java.util.HashSet;
    import java.util.Set;public class SetRemove { public static void main(String[] args) {
    Set<String> set = new HashSet<String>();
    set.add("5");
    set.add("2");
    set.add("4");
    set.add("1");

    set.remove("5");

    System.out.println(set);
    }}
      

  6.   

    这种方法不行,如果将removePerson的Id改为其他数的话会出现快速失败异常。
      

  7.   

    在set集合中删除Id与removePeron相同的对象...
      

  8.   

    string 能这么删,如果set内存的是对象呢?