如何检查项目是否已列入列表并阻止其添加。 以下是我到目前为止的情况:
public static void main(String[] args)
{
//Before checkout
Item list[] = new Item[10];
for(int i = 0; i < list.length; i++)
{
int random = (int)(Math.random() * 2);
if(random == 0)
list[i] = new Perish();
else
list[i] = new Nonperish();
}
for(int i = 0; i < list.length; i++)
{
for(int j = 1; j < list.length; j++)
if(list[i].getName().equals(list[j].getName()))
{
int newRandom = (int)((Math.random() * 2));
if(newRandom == 0)
list[i] = new Perish();
else
list[i] = new Nonperish();
}
}
答案 0 :(得分:0)
尽管使用数组尝试使用HashSet。要使对象Item在HashSet中工作,您应该重写hasCode()和equals()方法。我假设getName()返回String,所以这些方法应该是这样的:
@Override
public int hashCode() {
return getName().hashCode();
}
@Override
public boolean equals(Object o) {
if(o == null){
return false;
}
if(!o.getClass().equals(getClass())){
return false;
}
return this.getName().equals(((Item)o).getName());
}
然后尝试使用此代码。最后,您的数组不能包含任何重复的项目:
Item list[] = new Item[10];
Set<Item> itemSet = new HashSet();
for(int i = 0; i < list.length; i++)
{
do{
int random = (int)(Math.random() * 2);
if(random == 0)
list[i] = new Perish();
else
list[i] = new Nonperish();
if(itemSet.contains(list[i])){
continue;
}else {
itemSet.add(list[i]);
break;
}
}while(true);
}