小问题和代码;如果ArrayList中的所有项都正确,我需要该方法返回true。为什么这个解决方案没有工作,只是收到AssertionError?
public boolean unique() {
for(itemStock item: stock)
if (stock.equals(item))
return false;
return true;
}
如果调用对象和参数对象具有相同的所有属性值,我已经写了equals方法返回true
public boolean equals(itemStock other) {
if(name.equalsIgnoreCase(other.name))
if(priceUnit == other.priceUnit)
if(quantityRemain == other.quantityRemain)
return true;
return false;
}
答案 0 :(得分:1)
您正在进行stock.equals(item)
,其中stock
是一个ArrayList,item
其中一个项目。
您需要检查项目是否在列表中出现多次:
for (itemStock i1 : stock) {
int count = 0;
for (itemStock i2 : stock) {
if (i1.equals(i2)) count++;
}
if (count > 1) return false;
}
return true;
如果您的商品具有可比性或可清洗性,则可以将其放入新的set
。如果它们都是唯一的,那么新创建的集合将与列表具有相同的大小。