/ / List <T>にアクセスするために配列インデックスのようなインデックスを使用できますか? - java

List <T>にアクセスするために配列インデックスのようなインデックスを使用できますか? - java

私はインデックスを使用してリストにアクセスできるかどうか疑問に思っています

例えば:

List<Integer> list;

list[5]     //blah....

回答:

回答№1の39

以来 [] 演算子であり、Javaは演算子のオーバーロードをサポートしていないため、リストで使用することはできません。 set(int index, T value) そして get(int index) メソッドは、冗長である可能性がありますが、正確に同じ機能を提供します。


答え№222

List.get(int) インデックスを使用して要素にアクセスすることができます。


回答№3の6

インデックスを使用してリスト要素にアクセスするには、 取得する 方法:

取得する

パブリックオブジェクトget(int index)

返品 指定された位置の要素 このリストにあります。

パラメータ:index - 返す要素のインデックス。

戻り値: 指定された位置の要素 このリストにあります。

例外: IndexOutOfBoundsException - インデックスが範囲外です(index <0 || index> = size())。

リストのインデックスは0ベースであることに注意してください。


答え№4のための5

ここには良い答えがたくさんありますが、私はそれを指摘したいだけです list.get(i) 〜と同じです list[i] リストが配列(つまりArrayList)で実装されている場合のみLinkedListの場合は、実際にインデックスを作成していません get、むしろ反復する。

だからあなたが使うなら get() インタフェース型のListでは、特にループ内で、実装された方法を確認する必要があります。 get() ArrayListはO(1)ですが、 get() LinkedListはO(n)(はるかに遅い)です。


答え№5の場合は3

使用する代わりの get(int) を使用して配列を作成することです toArray()

List<T> list = ...

Object[] array = list.toArray();

Tが 既知の, toArray(T[]) 返すために使用することができます T[] の代わりに Object[].
の用法 toArray 単に意味のあるものではなく、 get配列が本当に必要な場合(たくさんのアクセス)。


答え№6の2

いいえ、Javaでこれを行うことはできません。


答え№7の2

いいえ、あなたは "に制限されています List.get (i).

角かっこ [] メソッド名ではなく構文レベルで定義されているので、それらを上書きすることはできません。配列専用に使用されます。

JVMのためのより現代的な言語であるScalaに移行したいなら、配列とリストへの統一されたアクセスを見つけるでしょうが、 () 括弧。