特定のインデックスでのJava ArrayListの置換


212

このJavaについてサポートが必要です。電球のArrayListを作成しました。特定のインデックスにある電球を別の電球に置き換えようとしています。それで、次の見出しでどのように進めますか?

public void replaceBulb(int index, Bulbs theBulb) {

}

9
その価値について、私はListインターフェースで「replace」、「put」、または「insert」を探していました。セットを探すつもりはなかった。
GuiSim 2014年

2
@GuiSimリストインターフェイスはそれほど長くはありません。5分で一度に全体を簡単に読むことができます...

2
私はEclipseのオートコンプリートを使用していましたが、インターフェースを見ていませんでした。
GuiSim

回答:


367

Listインターフェースのset(int index, E element)メソッドを確認してください。


3
ur right.But uは答えをset()メソッドがstaticメソッドではないという事実につながるので、それを編集しようと思うかもしれませんね?
Android Killer

9
@AndroidKiller静的ArrayList.set();ですが、独自のリストで呼び出すと、静的ではありません:myArrayList.set(int, E);
whitfin

このメソッドの問題は、arrayListが初期化されていない場合にarrayOutOfBoundExceptionをスローすることです。追加時に正しいインデックスに要素を配置したいのですが、それを行う方法があるかどうかはわかりません。
Bionix1441 2017

@ Bionix1441リストが初期化されている場合でも、存在しないインデックスの値を設定しようとすることは可能です。したがって、インデックスが有効であることを確認する必要があるだけです。
トトロトトロ2017

126

以下のように、ArrayListのsetメソッドを使用して、特定の位置にあるアイテムを置き換えることができます。

list.set( your_index, your_item );

ただし、要素はset()メソッド内で渡すインデックスに存在している必要があります。そうでない場合、例外がスローされます。


1
@vaxquis了解しました。Java8を作成してリリースしてください。私たちはそれを使用するためにここにいます。;)。そのため、回答は常に質問に応じる必要があるため、まず質問を読んでください。そして、それが以前の値を返した場合の問題は何ですか、その値が必要な場合は使用でき、それ以外の場合はそのままにします。それは古い値を置き換えることであり、それだけです。
Android Killer

1
@vaxquisは以前私のコメントを読んだことがあります。明確に述べられた答えは常に質問に応じるべきです。質問した人は、彼が要素を置き換えたいと述べたので、要素を含む配列リストを持っています。今サーをクリアしますか?
Android Killer

1
@vaxquisあなたが考えること、初心者はこれを知っているので、これらの問題は意味がありません。それでも私は
Android Killer

2
初心者であることは、誰かが何かを正しくコーディングする方法を知らないことを意味します。無効なコードを提供することは常に間違いであり、それは言い訳がありません。なぜなら、それは初心者に混乱をもたらす可能性があり、通常は混乱を招くからです。正しい自己完結型のコード例を提供することが、StackOverflowの目的です。回答の改善に感謝します。



7
public void setItem(List<Item> dataEntity, Item item) {
    int itemIndex = dataEntity.indexOf(item);
    if (itemIndex != -1) {
        dataEntity.set(itemIndex, item);
    }
}

1
これは、equals()メソッドに関して新しいアイテムが古いアイテムと等しい場合にのみ機能しますよね?
spikemanuk

@spikemanuk、それは「Item」の「equals()」メソッドの実装に依存します。等価性が「アイテム」の「id」にのみ依存する場合、このコードを使用して「アイテム:{id = 1、name =ロンドン}」を「アイテム:{id = 1、name =パリ}」に置き換えることができます
Aniruddha Jagtap
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.