0

次の 2 つのクラスを宣言しています。

   public class formula
    {
    ArrayList<values> var= new ArrayList<values>;
}

public class values
{
    int val;
    void addval(int val1)
    {
        val=val1;
    }
}

式の ArrayList を宣言しています。

 ArrayList<formula> S= new ArrayList<formula>;

次のステートメントを実行しようとすると:

  S.get(i).var.remove(b);

iループ変数はどこですか

エラーは発生せず、正常にコンパイルされますが、 var(b)forのインスタンスは削除されませんformula(i)。値はまだ残っています。なにが問題ですか?のすべてのインスタンスをトラバースするためのループだけですformula()

bは整数です。基本的に、削除しようとしている var arraylist 内の要素のインデックスです。

4

2 に答える 2

2

コレクション API の使用中は、equals と hashcode をオーバーライドする必要があります。そうしないと、コードに多くの予測できない結果が表示されます...

Java を初めて使用する場合は、equals、hashcode、および toString メソッドをオーバーライドすることを習慣にしてください。

于 2012-11-21T05:29:32.240 に答える
2

b = キーの場合は、値オブジェクトの方が適切です。ここで、オブジェクト b はキーと同じ hashCode を持つ必要があり、equals() メソッドは true を返す必要があります。Java でobj1obj2の 2 つのオブジェクトが同一と見なされるには、次の条件を満たす必要があります。

  1. obj1.hashCode()== obj2.hashCode()
  2. obj1.equals(obj2)== 真
于 2012-11-21T05:34:34.633 に答える