blog.waterlow.work

Ruby, Rails, js, etc...

【Java】【データ構造】勉強したことまとめ&ArrayListが二つある件

1.スタックとキューについて
定本Javaプログラマのためのアルゴリズムとデータ構造 を参照

ほとんど写経ですが…。その中で気になった所がありました。

Arrays.fill(queue, 0, queueSize, null);

配列の指定部分をまとめて指定した要素に変えてしまうメソッド。
便利だなーと思っていろいろ調べているとArrays.class内にこんな記述が。

public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
}
...
private static class ArrayList<E> extends AbstractList<E>
     implements RandomAccess, java.io.Serializable
{
...
}

とりあえずわかった所では
①ArraysクラスのasListメソッドを使うと配列→コレクションの変換ができるらしい
②ただasListで作ったコレクションは"ArrayList"と名前が付いているが、
 本家のArrayListではない(インタフェースもメソッドも足りない)

調べていくと以下のページに行き着きました。
リストの初期値は List java.util.Arrays.asList(T… a) で設定できる。

asListは以前から使っていたのですが、Arraysクラスの詳細は見たことがなかったので
こんなややこしいことになっているとは知りませんでした。