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つの違いや使い分けについて、実験しながら考察していきたいと思います。
では!