
09.複数の値を1つの変数で扱う方法を知る
※無料で読めます
プログラミング未経験でも大丈夫?
同じような値を一つの変数にまとめる方法は?
配列を使うには?
CollectionやMapを扱うには?
初めてjava を学習してみようという方/javaでコーディングできるけどやり方がいまいちわからない方に向けた記事です。
アジェンダ
それでは、いつものように私なりの言葉で、読んでいて眠くなることがないように、タイトルなども工夫していきます。
今回のゴール
・複数の値を一つの変数で扱えるようになる
・ペアを簡単に扱えるようになる
本記事は、型を知っていることを前提としてまとめます。
1. 集いし我らは一つの存在
まずは、配列というものです。集合、グループ化、まとまり、一括り。
つまり、ばらばらのものを一つにまとめる方法です。今できることは
String eClassStudentName1 = "赤羽 業";
String eClassStudnetName2 = "磯貝 悠馬";
String eClassStudentName3 = "岡島 大河";
// ...
こうですね。Eクラスの生徒を表す場合は、変数名に出席番号をつけます。
ですが、これだと誰か新入生が入ったり、クラスが変わってBクラスになったりした時の修正が面倒です。
それに、末尾に数字をつけているのはあまりよくありません。こういう時に、配列を使いましょう。
書き方は、 [] を型の後につけます。
String[] eClassStudentNames = {"赤羽 業", "磯貝 悠馬", "岡島 大河"/*, ...*/};
最初から値が決まっている場合はこのように書けます。
もちろん、順々に定義することも可能です。
String[] eClassStudentNames = new String[28];
eClassStudentNames[0] = "赤羽 業";
eClassStudentNames[1] = "磯貝 悠馬";
eClassStudentNames[2] = "岡島 大河";
// ...
String akabaneKaruma = eClassStudentNames[0];
String isogaiYuma = eClassStudentNames[1];
配列を扱ううえでの注意点は2つです。
1. 最初に[] で、その配列の全体数を決める必要がある
⇒ その全体数を超えると、エラーになってしまう
2. 1番目は、0 になる。つまり、0始まり。
⇒ [3] であれば、4番目を表す。
Q. ここで一つ質問
String[] eClassStudentNames = new String[28];
int[] lotoNumbers = new int[6];
この二つの変数はそれぞれ、「プリミティブ型」と「オブジェクト型」のどちらでしょうか?
※ 答えは、さいごに書きますので考えておいてください。
2. 弱点は見方を変えれば長所でもある
配列には弱点があります。注意点として書いたこの部分ですね。
注意点は2つです。
1. 最初に[] で、その配列の全体数を決める必要がある
⇒ その全体数を超えると、エラーになってしまう
最初から数が決まっている時以外では、全体数が分からない場面が多いです。その時に、この性質は辛いです。
実際は、そういった弱点をうまく隠してくれるものをよく使います。
import java.util.ArrayList;
ArrayList<String> eClassStudentNames = new ArrayList<>();
eClassStudentNames.add("赤羽 業");
eClassStudentNames.add("磯貝 悠馬");
eClassStudentNames.add("岡島 大河");
// ...
String akabaneKaruma = eClassStudentNames.get(0);
String isogaiYuma = eClassStudentNames.get(1);
標準で使えるクラス、オブジェクト型です。
使い方は、add() で順に入れていく感じですね。
逆に取り出す時は、get() で取得する順番は、配列と同じく0始まりです。
3. 意味のあるまとまりは効率を上げる
一つの値に対して、組み合わせとなるような値をセットで管理をしたい場合があります。その時に、専用のクラスを作ることで実現は可能です。
ですが、意味がないクラスを作ることは避けておきたいです。
そんな場合に、よく使うのがこのクラスです。
import java.util.HashMap;
HashMap<Integer, String> eClassStudentNames = new HashMap<>();
eClassStudentNames.put(1, "赤羽 業");
eClassStudentNames.put(2, "磯貝 悠馬");
eClassStudentNames.put(3, "岡島 大河");
// ...
String akabaneKaruma = eClassStudentNames.get(1);
String isogaiYuma = eClassStudentNames.get(2);
今回は、key情報としてIntegerを、そのInteger に紐づく形でString。
という組み合わせでコーディングをしています。
さいごに
複数の値をまとめることができるようになりました。
これは、繰り返し処理をする時にとても便利です。
List と 配列のどちらを使うことが多いかというと・・。
List の方が圧倒的に多いです。9割、List を使います。
配列を使う利点は、弱点と言っていた「全体数を制限する場面」です。
※ 処理効率では、配列の方が良かったりしますが…、最初は気にしなくて良いでしょう…。
次回は、「計算のやり方」に関して説明をしていきたいと思います。よろしければご覧になってください。
・・忘れてませんよ、質問の答え。
String[] eClassStudentNames = new String[28];
int[] lotoNumbers = new int[6];
両方とも、オブジェクト型です。
以前の記事で書きました。
プリミティブ型以外は、オブジェクト型です!と。
配列の元となっている型がプリミティブ型であっても、オブジェクト型です。配列という別の種類と捉えてください。
有料パートに関して
・今回の記事のまとめを書いています
※私なりのさらに細かい解説・具体例も書いています
・本当は知っておいた方が良い知識も書いています
ここから先は
¥ 150
いただいたサポートは、今後の創作活動に役立てさせていただきます。