2

あなたの助けが必要です :

値を含む特定のオブジェクトがあります。これらの値には、等しいものと異なるものがあります。同じ値に基づいて、これらのオブジェクトの 2 つの ArrayList を比較する必要があります。少なくとも、両方のリストに保存されていないすべてのエントリを削除する必要があります。

特定の Object 内の特定のフィールドを比較する関数を作成しました。

public void compareTwoValues(certainObj1, certainObj2){
    boolean returnStmt = true;
    for(int i : keysToCheck){
    if(!(jop1.returnValueForKey(i).equals(jop2.returnValueForKey(i)))){
            returnStmt = false;
        }
    }
    return returnStmt;
}

今、関数が false を返すオブジェクトにアクセスして削除する方法に問題がありますか?

同等のインターフェイスを使用してそれらを並べ替え、値を削除しようとしましたが、常に「concurrentmodificationexception」が発生しました(ええ、知っています:イテレータループを使用しました)。

ご協力いただきありがとうございます !

4

5 に答える 5

5

ArrayList には、指定されたコレクションに含まれるこのコレクションの要素のみを保持する boolean preserveAll(Collection another) があります。あなたの状況でそれを機能させるには、必要なフィールドのみを比較し、ArrayList にラッパーを配置する equals メソッドを使用して元のオブジェクトのラッパーを作成できます。

于 2013-08-16T09:19:23.157 に答える
0

Java Apache 共通ライブラリは減算機能を提供します。listutils クラスを使用して、2 つのリスト間の値を減算できます。

以下のリンクを参照してください 。ListUtils.subtract() はどのように機能しますか?

于 2013-08-16T09:20:08.000 に答える