我々は例えばリストリスト<T>にアクセスするためにインデックスのような配列インデックスを使用できますか?
にアクセスするためにインデックスを使用できるかどうか、私は疑問に思って:
List<Integer> list;
list[5] //blah....
我々は例えばリストリスト<T>にアクセスするためにインデックスのような配列インデックスを使用できますか?
にアクセスするためにインデックスを使用できるかどうか、私は疑問に思って:
List<Integer> list;
list[5] //blah....
[]
は演算子であり、javaは演算子のオーバーロードをサポートしていないため、Listで使用することはできません。その代わりに、set(int index, T value)
とget(int index)
メソッドを使用する必要があります。これらのメソッドは、冗長でも全く同じ機能を提供します。
List.get(int)
あなたは、インデックスを使用して要素にアクセスすることができます。
あなたはget方法を使用して、そのインデックスを使用して、リストの要素にアクセスすることができます。
パブリックオブジェクトは、指定された位置に(int型のインデックス)
戻り 要素をゲットこのリストの
パラメータ:index - 戻す要素のインデックス。
戻り値: 指定された位置にある要素 このリスト内の要素。
例外: 例外:IndexOutOfBoundsException - インデックスが範囲外の場合(インデックス< 0 || インデックス> =サイズ())。
リストのインデックスは0ベースであることに注意してください。
いいえ、あなたはList.get (i)
に制限されています。
角括弧[]
は、メソッド名ではなく構文レベルで定義されているため、それらを上書きすることはできません。それらは配列のためだけに使用されます。
JVM用のより現代的な言語であるScalaに移行したい場合は、配列とリストへの統一されたアクセスがありますが、どちらも()
カッコで囲んでください。
良い回答がたくさんありますが、リストが配列(つまりArrayList)で実装されている場合のみ、list.get(i)
はlist[i]
と同じです。 LinkedListの場合は、実際にget
でインデックスを作成するのではなく、むしろ反復処理します。
あなたは、特にループ内で、インターフェイスタイプ一覧でget()
を使用した場合のArrayListとget()
がOであるように、あなたはそれが実現していますどのように確認する必要があり、(1)LinkedListの持つget()
一方はO(n)は(かなり遅い)です。
get(int)
を使用する代わりにTが知らある場合、toArray(T[])
はT[]
代わりにObject[]
を返すために使用することができるtoArray()
List<T> list = ...
Object[] array = list.toArray();
を使用してアレイを作成することです。
toArray
の使用は、配列が本当に必要な場合(たくさんのアクセス)、get
の代わりに意味があります。
男、私はあなたを愛して<3。 – Kadaj