システムエンジニア兼IT講師の備忘録

技術やトレーニングテクニックなどを思いのままに発信していきます。

JavaのListって何だよ!

こんにちは!今日はJavaのお話です。

Java SE 9で動作確認しています。

Javaには、単純な配列ではなく、検索や途中挿入等の便利機能を持った配列である 「List」が用意されており、自由に利用することができます。

ただ、Listにも幾つか種類があり、基本的に使い方は同じなのですが 内部の仕組みが違っているため、時々効率の違い等が出るようです。

今回は、そもそもListの使いかたについて見ていきましょう。

Listの使い方

普通の配列と比較してみましょう。

普通のString型の配列

大きな特徴の一つは、要素数が決め打ちになってしまうことですね。

//要素数10の配列を作る
String[] stringArray= new String[10];

//最初に決めた要素数以上は挿入できない
stringArray[11] = "Hello!"

他にも、「既存の配列の5番目に新しく追加して、残りの要素を右にズラす」などは やろうと思えばできますが、ちょっとめんどくさいです。

List

Listでは、まず要素数を決める必要はありません。

//要素数は決めずに配列が作れる
List<String> list = new ArrayList<>();

//メモリの許す限り、いくらでも要素を足して良い
list.add("Hello");
list.add("World");

//途中挿入も思い通り
list.add(1, "Java");

結論、Listは高機能な配列と思ってもらえればOKです。

というわけで、出てきましたね。

List<String> list = new ArrayList<>();

はい。この部分です。イコールの右辺側にArrayListが出てきていますね。 実はJavaでは、こういった高機能な配列を作る時、どういう内部的な仕組みを取るか、 選ぶことができます。

幾つかのタイプが用意されていますが、よく使われているのがArrayListやLinkedListです。

具体的な使い方は、以前にもお見せした通り
List<好きなデータ型> 変数名 = new ArrayList<>();
List<好きなデータ型> 変数名 = new LinkedList<>();

です。

ソースにすると、こんな感じですね。

List<String> sampleList1 = new ArrayList<>();
List<String> sampleList2 = new LinkedList<>();

次回は、この2つの違いや使い分けについて、実験しながら考察していきたいと思います。

では!