2016-04-26 125 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倍多行 –