JavaにはList型というものがあることをご存じだろうか?
以前簡単に下記記事でList型について解説しましたが、今回はもう少し詳しく説明していきます。
Javaの参照型(データ型)解説【初学者・初心者用】 | エンジニアKISARAGIの備忘録 (kisaragi-it.com)
List型を知っていることでプログラミングの自由度がぐっとあがります。
ぜひマスターしていってください。
List型の特徴
ではまずList型とはどういったものなのか解説していきます。
List型はいくつもの要素を入れることができるデータ型です。
簡単に言うと配列のようなものと思っていただいたら分かりやすいです。
それなら配列でよくない?と感じる方もいるかもしれません。
しかしList型は配列よりも使い勝手がいいものとなっています。
そもそも配列は初期化の際に要素数を指定する必要があり、後から変更することはできません。
しかしList型の変数は後から要素を追加したり削除したりして要素数を自由に変更することができます。
このような違いがあるため、使用するなら断然List型ではないでしょうか?
ではそんなList型の使用方法について解説していきます。
【使用例】
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
public class JavaList {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
System.out.println(list);
}
}
【実行結果】
[a, b, c, d]
具体的には上記のようになります。
list変数の型をList型として、Listはインタフェースのためそれを実装したクラスであるArrayListクラスでインスタンス化しています。
そしてlist変数内に入れる要素の型としてString型を定義しています。
そしてArrayListの引数に与えられているArrays.asListで引数内の配列をList型に変換しているものです。
配列型で入れたものをList型にして、それを変数に代入しているという、とてもややこしいことになっていますが、定義&初期化方法としては大体こんな感じです。
要素の追加と削除
先ほどは定義&初期化については解説してきましたが、List内の要素を自由に変更する方法についてはまだ解説していませんでしたので、こちらで解説していきます。
要素の追加
ではまず要素の追加方法についてです。
要素の追加はaddメソッドを使用することで可能です。
先ほどのプログラムを少し改良して下記のようにしてみました。
【使用例】
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class JavaList {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
list.add("e");
System.out.println(list);
}
}
【実行結果】
[a, b, c, d, e]
eという要素が新しく追加されていることが分かります。
因みに他のList型変数を一気に追加することも可能です。
【使用例】
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class JavaList {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
list.add("e");
List<String> list2 = new ArrayList<String>(Arrays.asList("f","g","h","i"));
list.addAll(list2);
System.out.println(list);
}
}
【実行結果】
[a, b, c, d, e, f, g, h, i]
上記のようにaddAllメソッドを使用することでlist2の内容をlistに追加することができます。
要素の削除
次に要素の削除方法について解説していきます。
要素の削除は下記のようにremoveメソッドを使用します。
【使用例】
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class JavaList2 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
list.remove("c");
System.out.println(list);
}
}
【実行結果】
[a, b, d]
またすべての要素を削除指定となったら下記のようにclearメソッドを使用することで要素を空にできます。
【使用例】
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class JavaList3 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
list.clear();
System.out.println(list);
}
}
【実行結果】
[]
要素の取り出し方
ここまではList型の変数自信を出力してきましたが、要素一つ一つを扱う方法についてはまだ解説していませんでしたので、その方法について最後に説明していきます。
getメソッドについて
要素を取り出す方法としてまずgetメソッドを使用するというものがあります。
下記のようにgetメソッド内に取り出したい要素の引数を指定することで要素を取り出すことができます。
因みに引数は0から始まりますので、気を付けてください。
【使用例】
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class JavaList4 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
System.out.println(list.get(2));
}
}
【実行結果】
c
for文を使用する
先ほどは必要な要素を一つ取り出しましたが、すべての要素を一度に取り出したい事もあるかと思います。
その時に活躍するのがfor文です。
下記は拡張for文を使用して要素を一気に取り出しています。
【使用例】
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class JavaList5 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
for(String i : list) {
System.out.println(i);
}
}
}
【実行結果】
a
b
c
d
他にも下記のようにforEachを使用することで一度に取り出すことも可能です。
【使用例】
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class JavaList6 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
list.forEach(System.out::println);
}
}
こちらの方がコード量が減り、見やすくなっています。
因みに「System.out::println」と表記しているところはメソッド参照といい、引数なしで「クラス名::メソッド名」という方法で呼び出すことが可能なものです。
より簡潔にコードを記載することが可能となります。
まとめ
この記事ではJavaのList型について解説してきました。
- List型の特徴
- 要素の追加と削除
- 要素の取り出し方
List型の変数は配列と似た性質を持っていますが、異なる点として要素数を初期化の際に指定する必要がないことです。
後から要素を追加したり、削除したりと自由に要素数を変更することができます。
配列よりも使い勝手がいいものですので、ぜひマスターしてみてください。
今回の解説は以上となります。
コメント