JavaのArrayListの配列の大きさについて
Java のArrayListはListの実装でみなさんよく使ってると思います。 配列を使ってListを実装しているが、どうやって配列の大きさを決めて配列を作っているかを見ていく ref: ArrayList: https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/ArrayList.java ArraysSupport: https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/jdk/internal/util/ArraysSupport.java 結論 new するときは想像の通りで、何も指定されなければ空、指定されればそのサイズの配列が内部で作られる。 add するときは、(addされる前の配列の大きさ >> 1) 分増えるので、addされる前の大きさの 1⁄2 倍分増える addAll するときは、addするときと同じでサイズで配列のサイズが足りれば、addするときと同じ。足りなければ、必要な分丁度の配列が作られる。 要素を消しても初期サイズに戻ったりはしない 実装を読む new new ArrayList() しただけだと、空の配列が作られる public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; // 空の配列 } new ArrayList(initialCapacity) すると、指定したサイズの大きさの配列が作られる。 public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); } } add new ArrayList(5) をして、中身が [1,2,3,4,5] のを例として »