はじめに
java初心者が備忘録的に書いています
コレクション
javaにはデータをまとめて格納するためのAPIとしてコレクションフレームワークが定められている。
実務とかで使うことが多そう(List, Set, Mapとか)。
今回は有名なコレクションのなかでListに分類されているArrayListとLinlesListをまとめていく。
ArrayList
ArrayListは配列と似ていて要素を追加できるコレクションである。
書き方は
ArrayList<型名> 変数名 = new ArrayList<型名(省略もできる)>();
具体的な使い方は書き方としては以下の通り。
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
for (int i = 0; i < 2; i++) {
System.out.println(list.get(i));
}
}
}
ArrayListがもつメソッドを一部紹介
add(x)->リストの最後にxを追加
add(int, x)->int番目にxを挿入
set(int, x)->int番目にxを上書き
size()->格納されている要素数を返す
ArrayListは配列と違い要素が削除されたらそれ以降の要素が一個前に詰められる。
例)
0 1 2 3
a s d f
1番目のsを削除
0 1 2
a d f
LinkedList
LinkesListもArrayListと同じリストのクラス。よって書き方もArrayListをLinledListに書き換えればよいだけである。
しかしLinkesListはArrayListより要素の追加や削除を高速的に行うことができる。
これはクラスの内部実装の違いからおこる。
LinkedListは値の挿入や削除を行った場合に変更対象の一つ前の要素に対して次を指し示す矢印的なものを連結すればよいから高速なのである。
逆にArrayListは削除や追加を行ったら各要素を削除なら一つ前へ、追加なら一つ後ろへコピーしなおす必要がある。このため処理速度に差が出る。