0

2 つの ArrayList を比較しようとしていますが、うまくいかないようです。

仮定する:

List 1 というメインの arrayList は、次の方法で値を取得します。

 ArrayList<xTypeClass> List1 = new ArrayList<xTypeClass>(); 
 xTypeClass tmp = new xTypeCLass();
  tmp.setName(name);
  tmp.setaddress(address);
  tmp.setPhone(phone);
  tmp.setMonth(mo);
 ..etc
 List1.add(tmp);

これで、正確な型形式を保持する別の list2 ができましたが、値が異なります。そして、List2 を 1 と比較し、List2 に存在しないものと List1 に存在するものを確認し、それを List2 に追加したいと考えています。double for ループを使用して両方のリストを調べて、存在するものと存在しないものを見つけるのに問題があります。誰かが私を正しい方向に向けることができますか? さらに情報が必要な場合は、以下にコメントしてください。

4

2 に答える 2

5

xTypeClass に equals() と hashCode() を実装したと仮定すると、単に実行できない理由はありますか?

for (xTypeClass x : List1) {
    if (!List2.contains(x)) {
        List2.add(x);
    }
}
于 2012-07-23T23:40:12.347 に答える
0

list1、equals()、hashCode() の実装を破棄:

    list1.removeAll(list2); // get differnce
    list2.addAll(list1);    // add difference

Eclipse を使用している場合は、xTypeClass クラスに以下を使用できます。

ソース -> hashCode() と equals を生成...

Eclipse を使用していない場合は、Apache Commons の EqualsBuilder と HashCodeBuilder を参照してください。

http://blog.andrewbeacock.com/2008/08/write-simpler-equals-hashcode-java.html

于 2012-07-24T00:01:15.413 に答える