コンストラクターでサイズを指定してリストを初期化しようとしています。しかし、私のリストのサイズは0です。
_val seqList = ArrayList<ArrayList<Int>>(N) // This has the Problem
val queries = ArrayList<Query>(Q) // This works like a charm
_
N
とQ
の両方をユーザーからのゼロ以外の入力として設定しています。たとえば、_N = 100
_と_Q = 100
_
コードのデバッグ中に、queries.size() = 100
がseqList.size() = 0
であることがわかりました。
seqList
も_N ArrayList<Int>
_オブジェクトで初期化されているはずだという私の仮定は正しくありません。
あなたの仮定は正しくありません、私は恐れています。 ArrayList
の- ドキュメント から引用:
MutableList
実装を提供します。これは、サイズ変更可能な配列をバッキングストレージとして使用します。この実装は、容量を管理する方法を提供しません。これは、バッキングJSアレイ自体がサイズ変更可能であるためです。 JavaScriptで配列サイズを事前に割り当てることには速度上の利点がないため、この実装には容量と「成長増分」の概念は含まれていません。
特にコンストラクター:
ArrayList(initialCapacity = 0))
空のArrayListを作成します。
emptyArrayList
が作成されるため、引数として100を指定しても、リスト内に要素は作成されません。