我想要的是从2个arraylist获取不常见的项目
我做了什么:
代码:
for (int i =0;i<arraylist1.size();i++)
{
idNew = arraylist.get(i).get("id");
if (idNew.equals(arraylist.get(i).get("id")))
{
newAlert=true;
}
else {
newAlert=false;
}
}
- 如果 newAlert 为false,请从 idNew
获取非常见项目答案 0 :(得分:1)
您的检查方式是错误的,因为两个数组中的项目可能不是相同的顺序,因此您必须检查是否在其他arraylist中找不到所选项目。
例如:arrayLists中的Class类型是 Item
如果 ID 在项对象中是唯一的,那么您可以实施 等于(对象o) 和 hashCode() 用于匹配
的对象 @Override
public boolean equals(Object o) {
if(o instanceof Item){
if(o.getId() == id){
return true ;
}
}
return false;
}
@Override
public int hashCode() {
return id*13;
}
现在您可以匹配两个数组列表中的对象
for (int i =0;i<arraylist1.size();i++)
{
Item itemObj = arraylist1.get(i);
if (arraylist.contains(itemObj))
{
newAlert=true;
}
else {
newAlert=false;
}
}
如果您不想实施 equals(Object o) , hashCode() 您的解决方案可能如下
for (int i =0;i<arraylist1.size();i++)
{
Item itemObj = arraylist1.get(i);
newAlert=false;
for (int index =0;index <arraylist.size();index++)
{
Item item2 = arraylist.get(i);
if (item2.getId() == itemObj.getId())
{
newAlert=true;
break;
}
}
}