2

複数の変数を含むオブジェクトの配列リストがあります。

新しいオブジェクトを生成し、条件付きで同じ内容のオブジェクトが配列リストに存在しないことを確認したいと思います。

残念ながら、Arraylist.contains(object)とArraylist.equals(object)はどちらも、同じコンポーネントを持つオブジェクトではなく、同じオブジェクトの参照のみをチェックします。はるかに単純なString.contains( "x")のように動作させたいです。

arraylist.equals / arraylist.containsをオーバーライドして、Androidアクティビティ内でやりたいことを実行するにはどうすればよいですか?

4

2 に答える 2

2

ArrayListから継承する独自のクラスを作成し、両方に対して独自の定義を定義することができます。

public class myArrayList<E> extends ArrayList<E> {
    @Override
    public Boolean equals(object o) {
        //Your implementation
    }
    @Override
    public Boolean contains(object o) {
        //Your implementation
    }
}

次に、ArrayList型をMyArrayList型に置き換えます。

または、2つのArrayListを受け入れて、それらが等しいかどうか、または一方に他方が含まれているかどうかを通知するメソッドをどこかに作成することもできます。

public static Boolean areArrayListsEqual(ArrayList a, ArrayList b) {
     //Check if they are equal
}
于 2012-11-16T00:15:13.723 に答える
2

ArrayListのequals(Object o)メソッドとcontains(Object o)メソッドはどちらも、それらの各オブジェクトでequalsメソッドを呼び出します。したがって、浅い比較しか得られない場合は、ArrayListに配置しているオブジェクトが、equalsメソッドをオーバーライドして、それ自体のコンポーネントを適切に比較していないためです。

于 2012-11-16T01:32:03.307 に答える