2011-03-26 7 views

答えて

38

[]は演算子であり、javaは演算子のオーバーロードをサポートしていないため、Listで使用することはできません。その代わりに、set(int index, T value)get(int index)メソッドを使用する必要があります。これらのメソッドは、冗長でも全く同じ機能を提供します。

18

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

+0

男、私はあなたを愛して<3。 – Kadaj

2

いいえ、これはJavaでは実行できません。

+0

@Downvoterパトリックは、 'list [5]'はJavaでは不可能だと言っていたのは正しいですが、何も言及していませんでした。 – asgs

+2

@asgs - 私は "Downvoter"ではないが、答えは有用ではない、実際には間違っている。 List.toArray()[5] '[:-) –

+0

@Carlosは知りませんでした。「list.get(int)」を使用してリストにアクセスするためにインデックスを使用できます。 'toArray()'ありがとう。 – asgs

6

あなたはget方法を使用して、そのインデックスを使用して、リストの要素にアクセスすることができます。

パブリックオブジェクトは、指定された位置に(int型のインデックス)

戻り 要素をゲットこのリストの

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

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

例外: 例外:IndexOutOfBoundsException - インデックスが範囲外の場合(インデックス< 0 || インデックス> =サイズ())。

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

2

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

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

JVM用のより現代的な言語であるScalaに移行したい場合は、配列とリストへの統一されたアクセスがありますが、どちらも()カッコで囲んでください。

5

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

あなたは、特にループ内で、インターフェイスタイプ一覧でget()を使用した場合のArrayListとget()がOであるように、あなたはそれが実現していますどのように確認する必要があり、(1)LinkedListの持つget()一方はO(n)は(かなり遅い)です。

3

get(int)を使用する代わりにTが知らある場合、toArray(T[])T[]代わりにObject[]を返すために使用することができるtoArray()

List<T> list = ... 

Object[] array = list.toArray(); 

を使用してアレイを作成することです。
toArrayの使用は、配列が本当に必要な場合(たくさんのアクセス)、getの代わりに意味があります。

関連する問題