2016-04-26 122 views
0

嗨,大家好我有2个基于同一类的ArrayList。我必须从arraylist1添加到arraylist2不存在的行。我试图使用包含,但它总是返回false。我做错了什么?泰Android ArrayList比较

MyClass的

public class HataKoduBean { 
private String Oid; 
private String Name; 
private String Surname; 

}

如何界定我的ArrayList

Arraylist<MyClass> array1 = new Arraylist<>(); Arraylist<MyClass> array2 = new Arraylist<>();

我多努力,来比较?

for (int ii = 0; ii < array1.size(); ii++) { 
          if (!array2.contains(array1.get(ii))) 
           array2.add(array1.get(ii)); 
         } 
+0

显示的equals()和hashCode()为HataKoduBean类实现。 – curob

回答

2

首先,您必须在自定义类中实现equals()和hashCode()。

考虑使用Sets,因此您可以将一行中的集合与addAll()合并。

+0

tostring等于并且散列码已经实现了 –

0

首先,您必须在自定义对象 中实现equals()和hashCode(),并使用equals方法创建循环和比较对象。

实现equals和hashCode:

`@Override 
    public boolean equals(Object o) { 
     if (this == o) 
      return true; 
     if (o == null || getClass() != o.getClass()) 
      return false; 
     HataKoduBean o = (HataKoduBean) o; 
     return Oid != null?Oid.equals(HataKoduBean.Oid):HataKoduBean.Oid== null; 
    } 

    @Override 
    public int hashCode() { 
     return Oid != null ? Oid.hashCode() : 0; 
    }` 

比较对象:

for (int ii = 0; ii < array1.size(); ii++) { if (!array2.get(ii).equals(array1.get(ii))) array2.add(array1.get(ii)); }

+0

现在是我得到的3倍多行 –