如果每个项目在Arraylist中都是唯一的,则返回true

时间:2016-06-04 16:25:48

标签: arrays arraylist

小问题和代码;如果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;
}

1 个答案:

答案 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。如果它们都是唯一的,那么新创建的集合将与列表具有相同的大小。