Java:删除集合中的指定项(如果存在)

Java:删除集合中的指定项(如果存在),java,iterator,set,boolean,Java,Iterator,Set,Boolean,如果存在指定项,如何从此集中删除该项?如果集合已修改,则返回true;如果未修改,则返回false 目前,除了remove()方法外,其他方法都可以工作 import java.util.Iterator; 公共类Set300实现了Iterable{ 私人包=新包(); 公共布尔包含(T项){ 对于(T i:袋子){ 如果(i.equals(item))返回true; } 返回false; } 公共布尔加法(T项){ 如果(包含(项目)){ 返回false; } 否则{ 添加(项目); 返回tr

如果存在指定项,如何从此集中删除该项?如果集合已修改,则返回true;如果未修改,则返回false

目前,除了remove()方法外,其他方法都可以工作

import java.util.Iterator;
公共类Set300实现了Iterable{
私人包=新包();
公共布尔包含(T项){
对于(T i:袋子){
如果(i.equals(item))返回true;
}
返回false;
}
公共布尔加法(T项){
如果(包含(项目)){
返回false;
}
否则{
添加(项目);
返回true;
}
}
公共布尔删除(T项){
如果(包含(项目)){
返回false;
}
否则{
迭代器i=bag.Iterator();
while(i.hasNext()==true)
如果(i.next().equals(item)){
i、 删除(项目);
}
返回true;
}
}
公共迭代器迭代器(){
return bag.iterator();
}
}
如果包中不包含项目,remove()方法应返回false;否则,请将其移除。
它不会返回true或false,也不会从集合中删除数字

我认为您编写的代码中有错误。您的remove()正在检查集合中是否存在项,如果它发现该项,则返回false,而不是删除该项。尝试将您的remove()替换为:

公共布尔删除(T项){
如果(包含(项目)){
迭代器i=bag.Iterator();
while(i.hasNext()==true)
如果(i.next().equals(item)){
i、 删除(项目);
}
返回true;
}
否则{
返回false;
}

如果它包含项目,则返回false?什么“不起作用”?@sqrd尝试从If语句中删除
如果(i.next().equals(item)),则在此处删除分号;{@SotiriosDelimanolis:如果袋子不包含项目,则返回false;否则,将其删除。@ramp:the remove()方法不会返回true或false,也不会从集合中删除数字谢谢您简化了我的代码!但是,我在尝试运行它时收到此错误:“线程“main”java.lang中的异常。错误:未解决的编译问题:类型迭代器中的方法remove()不适用于参数(T)”您应该检查在remove方法中传递的参数。请参考以下问题:[()和[()
import java.util.Iterator;

public class Set300<T> implements Iterable<T> {

  private Bag<T> bag = new Bag<T>(); 

  public boolean contains(T item) {
      for (T i : bag){
          if (i.equals(item)) return true;
      }
      return false;
  }

  public boolean add(T item) {
      if (contains(item)){
          return false;
      }
      else{
          bag.add(item);
          return true;
      }
  }

  public boolean remove(T item) {
      if (contains(item)){
          return false;
      }
      else{
          Iterator <T> i = bag.iterator();
          while (i.hasNext() == true)

              if (i.next().equals(item));{
                  i.remove(item);
              }
          return true;
      }
  }

  public Iterator<T> iterator() {
      return bag.iterator();
    }
}
public boolean remove(T item) {
  if (contains(item)){
      Iterator <T> i = bag.iterator();
      while (i.hasNext() == true)

          if (i.next().equals(item)){
              i.remove(item);
          }
      return true;

  }
  else{
      return false;
  }