1

授業がある:

static class AnotherClass {
        int number;
        String isPrime;

        public int getNumber() {
            return number;
        }

        public String getPrime() {
            return isPrime;
        }

        public void setNumber(int number) {
            this.number = number;
        }

        public void setPrime(String prime) {
            isPrime = prime;
        }

    }

そしてメインクラスで私は持っています:

    List<AnotherClass> listx = new ArrayList<AnotherClass>();//just a arraylist

for (int z = 0; z < howManyQuestions; z++) {//in loop i add class with fields
            AnotherClass classx = new AnotherClass();
            int valuex = Integer.parseInt(keyboardkey.readLine());

            classx.setNumber(valuex);//save value in this class

            String answer = Check(valuex);//i just get here string answer YES NO
            classx.setPrime(answer);

            listx.add(classx);//and i add this two fields of class to list

            System.out.println();

        }
入力:(値を追加して、以前に入力されたかどうかを確認します)
3
4
3

出力
いいえ
いいえ
はい

たとえば、値「3」がリストに含まれているかどうかを確認するにはどうすればよいですか?
4

4 に答える 4

2

1 AnotherClass は equals() を実装する必要があります (それに応じて hashCode() を実装します)。

2 listx のメソッド contains(Object o) を使用します。

于 2011-07-10T19:02:04.127 に答える
2
private boolean contains(int i)
{
    for(int j: listx.getNumber()) { if(i == j) return true; }
    return false;
}
于 2011-07-10T19:07:44.423 に答える
1

いくつかのメモ -

あなたのクラスは静的を必要としません。これは、内部クラスを宣言する場合に役立ちます。

int だけでなく、int に依存する文字列を保持するコンテナー クラスがあります。クラス内でチェックを行う方が慣用的です。

class AnotherClass {
        int number;


        public int getNumber() {
            return number;
        }

        public String getPrime() {
            return check(number)
        }

       private boolean check() { ... whatever logic you had .. }
}

「含む」機能を探している場合は、おそらく HashSet を使用するか、順序を維持したい場合は LinkedHashSet() を使用します。作成したクラスでこれを行う場合は、 hashCode() メソッドを実装して、値が重複しているかどうかを知る方法を hashSet に伝える必要があります。

または、リストを反復処理することもできます。

于 2011-07-10T19:02:46.343 に答える
1

equals()のために実装する必要がありAnotherClassます。デフォルトequals()では、値が等しいのではなく同一性が比較されます。

のjavadocはList.contains()言う:

このリストに指定された要素が含まれている場合、true を返します。より正式には、このリストに のような要素 e が少なくとも 1 つ含まれている場合にのみ true を返します(o==null ? e==null : o.equals(e))

于 2011-07-10T19:04:58.447 に答える