INTRODUCTION
「Listって結局なんなの?」
Javaを書き始めたころ、
List というものが
よく出てきました。
ただ、
Listってデータそのものなのか?
オブジェクトとは何が違うのか?
Listの中には何が入っているのか?
こういったところが 最初はかなり分かりにくかったです。
01
まずは普通の変数
まずは一番単純な例です。
String name = "田中";
name という変数に
「田中」という文字列を入れています。
変数は、値を扱うための 名前付きの入れ物として考えると 分かりやすいです。
02
オブジェクトを扱う
次に、人物を表す
Person クラスを考えます。
Person person = new Person();
ここでは Person という
クラスからオブジェクトを作っています。
例えば、
person.setName("田中");
person.setAge(30);
とすれば、 1人分の情報を持ったオブジェクトとして 扱うことができます。
03
では、Listとは何なのか
ここでListが出てきます。
List<Person> persons =
new ArrayList<>();
これは、
と考えるとかなり分かりやすくなります。
つまり、
Person person;
は1つのPersonを扱う。
List<Person> persons;
は複数のPersonを扱う。
04
Listにデータを追加する
Listを作っただけでは 中身は空です。
List<Person> persons =
new ArrayList<>();
Person person1 = new Person();
person1.setName("田中");
Person person2 = new Person();
person2.setName("佐藤");
persons.add(person1);
persons.add(person2);
これでListの中に 2つのPersonオブジェクトが入ります。
List
├─ Person(田中)
└─ Person(佐藤)
05
Listをループする
業務システムでは、 Listの中身を順番に処理することが 非常によくあります。
for (Person person : persons) {
System.out.println(
person.getName()
);
}
この場合、
person
はListそのものではありません。
Listの中から
1件ずつ取り出された
Person オブジェクトです。
06
業務コードで急に難しくなる理由
Javaの勉強では、
List<Person>
程度で終わることが多いですが、 実際の業務コードでは もっと複雑な構造が出てきます。
List<Map<String, Object>>
例えばこのようなコードを見ると、 一気に分かりにくくなります。
分からないのは Javaの文法そのものではなく、 「何を何個持っているのか」が 見えなくなっている場合があります。
FIELD NOTE
Listは「入れ物」と考えると分かりやすい
Javaを勉強していると、 Listそのものを難しく考えてしまいがちでした。
でも、
Listは複数のデータを 扱うための入れ物。
そして、その中に StringやInteger、 独自クラスのオブジェクトなどを 入れることができます。
ここが分かると、
List<Person> のような
型も少し読みやすくなります。