2012-02-26 14 views
1

本当に基本的なOOの理解の問題私は、どんな助けにも大変感謝しています。ArrayListに一意のオブジェクトインスタンスを追加

私はボタンを押すたびにarraylistに「Thing」のインスタンスを追加しようとしていますが、リストに追加する一意のインスタンスを作成する方法については頭を悩ますことはできません。別のボタンを押すと、最新のオブジェクトがリストから削除されます。

ArrayList myList = new ArrayList<Thing>(); 
if(input.isKeyPressed(Input.KEY_A)){ 
      Thing myThing = new Thing(); 
      myThing.setNumber(myList.size()); 
      myList.add(myThing); 
     } 

if(input.isKeyPressed(Input.KEY_R)){ 
      if(myList.size()>0){ 
       myList.remove(myList.size()-1); 
      } 
     } 

は、私が「もの」をたくさん作ることに計画している場合、私は、彼らが呼ばれているものを気にしない(でも、私はユニークなもの、オブジェクト名を追跡したいです)。最小の痛みで各ボタンのプレス上にユニークな「もの」オブジェクトを作成するにはどうしたらいいですか?

UPDATE:私は「シング」のフルのArrayListを作成するとコメントの おかげで、すべてのインスタンスがあり、「myThing」と呼ばれている各インスタンスそのうち、 ...私はより良い私の質問を明確にしてみましょうください同じインスタンス変数の値。

「Thing」にはboolean isVisable = trueが、他にはboolean isVisable = falseが含まれていました。リストの各要素に同じ名前が付いているので、私は立ち往生します。

+3

上記のコードにはどのような問題がありますか? –

+1

私もそれを手に入れません。あなたの問題は何ですか?ユニークにしたい場合は、ハッシュメソッドを試してみてください。これは、あなたの望むことですか?私は確信していない、うそです。 – tester

+2

'新しいThing()'を実行するたびに、あなたは一意の 'Thing'インスタンスを作成しています。あなたはあなたの問題が何であるかを説明するために少し質問を明確にする必要があります。 –

答えて

2

はその事に等しいとhashCodeを正しく実装していることを確認した後、セットコレクション(すなわち、HashSetの)内のインスタンスを格納します。 hashCode()とequals()の実装では、Thingの2つのインスタンスが同じであるため、必要な方法で一意性を強制することができます。

ここでのトリックは、hashCode()とequals()を実装することはまったく簡単なことではありませんが、Javaを使用する予定がある場合は、それを行う方法を知る必要があります。したがって、有効なJAVAのappropriate chapterを読んでください。

+0

私が読んで理解している間、答えとリンクをありがとう"、私の理解は確かに合計よりも小さいです。もっと勉強する時間。 – Reustonium

+1

まあ、この時点でJavaの経験がすべて「Head First Java」であれば、「Effective Java」は時期尚早かもしれません。これは非常に深刻なテキストで、言語に関する多くのハードコアの詳細を理解する必要があります。 –

+0

「head first java」へのフォローアップでお勧めできますか?再度、感謝します。 – Reustonium

0

はこれを試してみてください。

$ cat Thing.java 
import java.util.*; 
public class Thing{ 
     UUID id; 
     Thing() { 
       id = UUID.randomUUID(); 

     } 

     public String toString(){ 
       return id.toString(); 

     } 

     public static void main(String[] argv) { 
       Thing t = new Thing(); 

       System.out.println(t); 
     } 
} 


$ javac Thing.java && java Thing 
08bb3702-84d3-4bc3-b8ab-bb52b90b8f78 
関連する問題