webdevqa.jp.net

ArrayList <ArrayList <Int >>をkotlinのサイズで初期化します

コンストラクターでサイズを指定してリストを初期化しようとしています。しかし、私のリストのサイズは0です。

_val seqList = ArrayList<ArrayList<Int>>(N) // This has the Problem
val queries = ArrayList<Query>(Q) // This works like a charm
_

NQの両方をユーザーからのゼロ以外の入力として設定しています。たとえば、_N = 100_と_Q = 100_

コードのデバッグ中に、queries.size() = 100seqList.size() = 0であることがわかりました。

seqListも_N ArrayList<Int>_オブジェクトで初期化されているはずだという私の仮定は正しくありません。

9
droidchef

あなたの仮定は正しくありません、私は恐れています。 ArrayListの-​​ ドキュメント から引用:

MutableList実装を提供します。これは、サイズ変更可能な配列をバッキングストレージとして使用します。

この実装は、容量を管理する方法を提供しません。これは、バッキングJSアレイ自体がサイズ変更可能であるためです。 JavaScriptで配列サイズを事前に割り当てることには速度上の利点がないため、この実装には容量と「成長増分」の概念は含まれていません。

特にコンストラクター:

ArrayList(initialCapacity = 0))

空のArrayListを作成します。

emptyArrayListが作成されるため、引数として100を指定しても、リスト内に要素は作成されません。

8
s1m0nw1