从2个arraylist获取不常见的项目

时间:2016-03-19 07:53:35

标签: android arraylist

我想要的是从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

获取非常见项目

1 个答案:

答案 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;                     
            }
         }
    }