1

と言う2つのリストがlistAありlistA1、クラス型listAのオブジェクトが含まれ、クラスA型のlistA1オブジェクトも含まれています。ただし、Javaコードによってクラスオブジェクトが追加され、 AlistA1はString を Classに変換してクラスAオブジェクトを追加します。listAAJSONA

ここで、 と を比較する必要がlistAありlistA1ます。listAにも含まれているオブジェクトが含まれている場合は、そのオブジェクトを削除して、含まれていないすべてのオブジェクトをlistA1返す必要があります。listAlistA1

Javaでこれを達成するにはどうすればよいですか?

4

5 に答える 5

1

equalsクラスに以下のようにメソッドを実装(オーバーライド)してくださいA。完了すると、containsメソッドが役立ちます。

  public boolean equals(A a){
       boolean bEqual = false;
       if(this.value1!= null && a.value1!= null && 
          this.value1.eqauls(a.value1)
          ........
          ........
        ) {
          bEqual = true;              
        }
        return bEqual;
   }

編集:

の要素を繰り返しますlistA1。に存在する場合はlistA、削除します。

   for(A a: listA1){
     if(listA.contains(a)){
        listA.remove(a);
     }
   }
于 2012-10-11T04:58:58.333 に答える
0

.equals(Oject)クラスの メソッドとメソッドをオーバーライドする必要があります.hashCode()
リストにはhashCodeは必要ありませんが、equalsをオーバーライドすると、コントラクトはhashCodeをオーバーライドする必要があると言います

于 2012-10-11T05:03:36.617 に答える
0

Apache の commons.collections ライブラリには CollectionUtils クラスがあり、交差、差分、結合など、コレクションの操作/チェックのための使いやすいメソッドを提供します。

org.apache.commons.collections.CollectionUtils APIドキュメントはこちらです。

そのために相互作用メソッドを使用できると思います

于 2012-10-11T05:01:36.080 に答える
0

問題を解決するために私がした正確なこと.....

 public static class A  {


        String  headerName;

        public String getHeaderName() {
            return headerName;
        }
        public void setListBoxHeaderName(String headerName) {
            this.headerName= headerName;
        }
        public A(String headerName) {
            super();

            this.headerName = headerName;
        }


        public boolean equals(A rData) {
            boolean bEqual = false;
            if (this.getHeaderName() != null && rData.getHeaderName() != null
                    && this.getHeaderName().equals(rData.getHeaderName())) {
                bEqual = true;
            }
            return bEqual;
        }

    }

そして、2つのリストを比較するためのコードは次のとおりです...

for (A value1 : listA1) {
            for (A value2: listA) {
                if (value2.equals(value1 )) {
                 listA.remove(value2);
                    break;
                }
            }
        }

これは私が使用した正確な解決策ですありがとう

于 2012-10-11T06:05:01.740 に答える
0

2 つのオブジェクトを比較する場合は、オブジェクトの比較を参照してください。

また、それがどのように機能するかは等しい

于 2012-10-11T05:25:42.963 に答える