2016-04-26 8 views
0

こんにちは私は同じクラスに基づいて2 ArrayListを得た。 arraylist1からarraylist2に行を追加する必要があります。私はcontainsを使用しようとしましたが、常にfalseを返します。私は間違って何をしていますか? TyのAndroid ArrayListの比較

MyClassの私は比較しようとした方法

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

のArrayListを定義する方法

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

}

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

は(等号を示す)とHataKoduBeanクラスのハッシュコード()の実装:

'@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; }' 

オブジェクトを比較します。 – curob

答えて

2

まず、あなたのカスタムクラスでequals()とhashCode()を実装する必要があります。

Setsを使用することを検討してください。コレクションを1行にまとめてaddAll()とすることができます。

+0

tostring equalsとhashcodeはすでに実装されています –

0

まず、カスタムオブジェクト にequals()とhashCode()を実装し、ループを作成し、このようなequalsメソッドを使用してオブジェクト間を比較する必要があります。

等しいとハッシュコードを実装:

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

+0

今3倍の複数の行があります –

関連する問題