【初心者用】Javaの配列とコレクションクラスについて
公開日: 2022/8/29
更新日: 2022/8/29
Javaには、複数のデータをまとめる方法がいくつか存在します。
それは、「配列」と、「コレクションクラス」というものです。
今回は、
・配列について
・コレクションクラスについて(具体例としてArrayListクラス)
・比較した際の特徴
について説明していきたいと思います。
それは、「配列」と、「コレクションクラス」というものです。
今回は、
・配列について
・コレクションクラスについて(具体例としてArrayListクラス)
・比較した際の特徴
について説明していきたいと思います。
1. 配列
配列は、複数のデータをまとめることのできるメジャーなものの一つです。
書き方としては、以下のようになります。
「データ型」の部分には、配列に格納するデータ型を書きます。 「変数」はその配列名となります。 「{}」で囲われた中身は、配列に収める個々の値で、「,」で区切って書いていきます。これらの配列に収められた値を「要素」といいます。 そこから特定の要素を取り出す際は、以下のように書きます。
「変数」は配列の変数で、「[]」は、インデックスとも呼ばれるもので、「何番目に入れた要素か」を表すものです。
「0」から始まるので、「0,1,2,3…」と続きます。
よって、最初に入れた要素の場合は、「変数[0]」、二番目に入れた要素は「変数[1]」のように書きます。
使い方として、以下に、具体的に書いてみたプログラムと、実行結果を書いていきます。
また、インデックスを指定することで、特定の要素を書き換えることができます。
以下に具体例を記載します。
書き方としては、以下のようになります。
- データ型[] 変数 = {値A,値B,値C,...};
「データ型」の部分には、配列に格納するデータ型を書きます。 「変数」はその配列名となります。 「{}」で囲われた中身は、配列に収める個々の値で、「,」で区切って書いていきます。これらの配列に収められた値を「要素」といいます。 そこから特定の要素を取り出す際は、以下のように書きます。
- 変数[添え字]
「変数」は配列の変数で、「[]」は、インデックスとも呼ばれるもので、「何番目に入れた要素か」を表すものです。
「0」から始まるので、「0,1,2,3…」と続きます。
よって、最初に入れた要素の場合は、「変数[0]」、二番目に入れた要素は「変数[1]」のように書きます。
使い方として、以下に、具体的に書いてみたプログラムと、実行結果を書いていきます。
- public class Sample {
- public static void main(String[] args) {
- Integer[] nms = {1,20,300,4000};
- System.out.println(nms[2]);
- }
- }
また、インデックスを指定することで、特定の要素を書き換えることができます。
以下に具体例を記載します。
- public class Sample {
2. コレクションクラス
コレクションクラスは、配列と同様に複数のオブジェクトをまとめることのできるクラスです。
一口に言ってもコレクションクラスは以下のようにいくつかの種類があり、大別して3つに分けられます。
List構造(ArrayList,LinkedList)
・配列に似ていて、番号順に要素が並ぶ。
・番号順のため、データが重複しても問題ない。
Map構造(HashMap,TreeMap)
・番号では管理せず、キーと値をそれぞれ持った要素を管理する。
・値は重複してもいいが、キーはすべて異ならなければならない。
Set構造(HashSet,TreeSet)
・番号もキーもない、値のみで管理する。
・値のみでの管理のため、重複は一切許されない。
これらに共通して言えることとして、
・宣言後も自由に要素数を変更できる
・要素の随時追加/削除が可能
という特徴があります。
書き方としては、以下のようになります。
解説しますと、1行目の「データ型」は、そのコレクションに収める要素のデータ型を指します。
「変数」はそのコレクションの変数名です。
また配列では宣言時に要素数を指定しましたが、ArrayListクラスは行いません。
次に、2行目は、宣言したArrayListクラスの変数に対してaddメソッドでデータを追加しております。
最後に、3行目では、格納した要素の取得を行っております。
方法としては、getメソッドを用い、引数に取得したい添え字を添えてやります。
これらを用いた具体例と実行結果を以下に記載します。
一口に言ってもコレクションクラスは以下のようにいくつかの種類があり、大別して3つに分けられます。
List構造(ArrayList,LinkedList)
・配列に似ていて、番号順に要素が並ぶ。
・番号順のため、データが重複しても問題ない。
Map構造(HashMap,TreeMap)
・番号では管理せず、キーと値をそれぞれ持った要素を管理する。
・値は重複してもいいが、キーはすべて異ならなければならない。
Set構造(HashSet,TreeSet)
・番号もキーもない、値のみで管理する。
・値のみでの管理のため、重複は一切許されない。
これらに共通して言えることとして、
・宣言後も自由に要素数を変更できる
・要素の随時追加/削除が可能
という特徴があります。
ArrayList
ArrayListクラスは、配列に似ており、データを格納した順番に保持します。書き方としては、以下のようになります。
- ArrayList<データ型> 変数 = new ArrayList<データ型>();
- 変数.add(要素);
- 変数.get(添え字);
解説しますと、1行目の「データ型」は、そのコレクションに収める要素のデータ型を指します。
「変数」はそのコレクションの変数名です。
また配列では宣言時に要素数を指定しましたが、ArrayListクラスは行いません。
次に、2行目は、宣言したArrayListクラスの変数に対してaddメソッドでデータを追加しております。
最後に、3行目では、格納した要素の取得を行っております。
方法としては、getメソッドを用い、引数に取得したい添え字を添えてやります。
これらを用いた具体例と実行結果を以下に記載します。
- import java.util.ArrayList;
- public class Sample {
- public static void main(String[] args) {
- ArrayList
nms = new ArrayList();
- &n
3. 比較した際の特徴
配列
・コレクションクラスと比較して、宣言時に要素のサイズを指定する分、メモリ効率が良く、処理速度面では優れている。コレクションクラス
・随時データの追加・削除・置換ができるため、作成時に要素数が不確定であったり、要素の追加や削除が行われる機会が多い場合に適している。このことから、最初から要素数や格納したいものが決まっている場合は配列、要素を複雑に操作したい場合などにはコレクションクラスがおすすめになります。