2011-07-10 3 views
1

私はクラスがあります。arraylistにクラスフィールドに値が含まれている場合はどうなりますか?

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(); 

     } 
INPUT: (i add value and check if it was input before) 
3 
4 
3 

OUTPUT 
NO 
NO 
YES 

How can i check if, for example value "3" is containing by list?
+1

forループを使用して、適切なgetXXXメソッドを呼び出します。それでおしまい。 –

+0

'list.contains(" valueToBeChecked ")';を使用してください。 – Logan

答えて

2

1 AnotherClassは(適宜)(とhashCodeを実装))(等号を実装する必要があります。

2 useメソッドにlistxの(Object o)が含まれています。

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()メソッドを実装して、重複値があるかどうかを知る方法をハッシュセットに伝える必要があります。

あなたのリストを反復することができます。

1

AnotherClassにはequals()を実装する必要があります。デフォルトのequals()は、値の同等性の代わりに同一性を比較します。 List.contains()ため

のjavadocは言う:このリストに指定された要素が含まれている場合

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

2
private boolean contains(int i) 
{ 
    for(int j: listx.getNumber()) { if(i == j) return true; } 
    return false; 
} 
関連する問題