Java:删除集合中的指定项(如果存在)
如果存在指定项,如何从此集中删除该项?如果集合已修改,则返回true;如果未修改,则返回false 目前,除了remove()方法外,其他方法都可以工作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
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;
}