2012-03-19 15 views
0


私はこの質問がすでにここで尋ねられていると思います。私は検索しましたが、類似のものは見つかりませんでした。だからここに行く -
は、私は次のようにカスタムデータオブジェクトMethodMethodが持っている -Java LinkedList - オブジェクトのインデックスを取得する

public Class Method { 
List<String> inputParameters; 
String resultVariableName; 
} 

今私はMethodオブジェクトのリポジトリとして機能LinkedList<Method>を持っています。

Methodオブジェクトには、具体的には、オブジェクトの正しいインデックスを決定する方法があります。
私の質問はLinkedListクラスはindexOfルーチンを持っていませんが、オブジェクトのこのリターン最初に出現したが、その後Methodオブジェクトの2つのコピーがLinkedList(右?)
うに常駐することができないということが挙げ全くされていることを顔から生じますすべてのMethodオブジェクトをタグ付けして、LinkedListに追加してください。私の目的を解決してください。もしそうなら、理想的なやり方がありますか?

編集:
私の使用例をもう少し説明してください。
私のコードは基本的にVelocityテンプレートのトップダウンを読み、Methodのオブジェクトを作成します。 1つのMethodオブジェクトは、遭遇するすべての速度ルーチンに対して作成されます。 Velocityルーチンが呼び出された回数やVelocityルーチンに提供された入力/結果の回数に実際の制限がないため、同じ要素をLinkedListの複数のインデックスに格納できる理由を説明します。

は今、私は、ユーザーがクリックするとMethodオブジェクトを編集することができた使用してLinkedList<Method>でUIコンポーネント、Methodオブジェクト参照ごとに1 JButtonを持っています。

このように、私は同じ要素は、あなたが最初の場所で「正しい」インデックスとはどういう意味ですかLinkedList<Method>

+0

私はあなたのことを正しく理解しているかどうかはわかりません。あなたは(オブジェクトのリスト内の)オブジェクトのインデックスをオブジェクトに保存するのが好きですか?そして今、もう一度追加したら?オブジェクトのインデックスのリストを持っているか、または2番目の追加操作を防止しますか?たぶんあなたは、すべてのオブジェクトを一度しか追加することができないSetを探しているかもしれません。 –

+0

同じオブジェクトをリストに2回追加する目的は何ですか? –

+0

@All私のユースケースをさらに説明するために編集されました。 – ping

答えて

2

に倍の2倍以上の数に存在した場合に編集するMethodオブジェクト参照を強要され知っている必要があります?リンクされたリストに同じ要素が2回以上含まれる場合は、リストには参照Methodオブジェクトのみが含まれますが、オブジェクト自体ではなく、どのインデックスが「正しい」ビューであるかに注意してください。もちろん

あなただけのリンクリストの上に自分自身を反復処理し、与えられたMethod参照が発生するすべてのインデックスを返しますが、それはあなたがそれで何をしようとしてはっきりしていないことができます。

に取得すると、索引はリンクされたリストではあまり使用されないことに注意してください。特定の索引はO(n)操作です。

+0

ありがとう!たくさんの意味があります。 – ping

+0

ジョンの答えはいつも意味があります...彼らが意味をなさないならば、 "センス"は間違っています。とにかく、指定されたMethodの単一のインスタンスだけを必要とするが、order/indexが重要な場合は、LinkedHashMapを使用する必要があります。複数のインスタンスが必要な場合、order/indexはリンクされたリストを繰り返し処理することが重要です。 –

0

重複はLinkedListで許可されます。

0

LinkedListは重複を避けますが、複数のコピーを持つことがあります。

複数のインスタンスを回避し、linkedlistクラスを拡張し、add関数をオーバーライドしてMethodオブジェクトがすでに存在するかどうかを確認するロジックを配置できます。

OR

あなたはMethodオブジェクトのすべてのインスタンスを取得したい場合は、反復子を使用して、それのすべてのインスタンスを収集し、その結果、このコレクションを返すことができます。

0

"これはシナリオの場合、Methodオブジェクトの2つのコピーがLinkedListに存在できません"、どのオブジェクトを取得するのかをどのように識別しますか?

この場合、LinkedHashMapを使用することをお勧めします。ここでは、識別子をキーとして使用してMethod'sオブジェクトを一意に識別することができます。

関連する問題