LoginSignup
0
0

More than 1 year has passed since last update.

【Java】配列とリスト

Posted at

はじめに

プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。

Rubyの配列との違い

Javaの配列は、Rubyの配列と性質が異なります。

Javaの配列は、格納する要素の数を最初に決める必要があり、かつ後で要素数を変更することができないようです。

要素を増やす場合は、サイズの大きな配列に新たに作成して元データをコピーするか、ArrayListというリストの一種を使用します。

Javaの配列

class Main {
  public static void main(String[] args) {
    int[] scores;
    scores = new int[3];

    scores[0] = 1;
    scores[1] = 5;
    scores[2] = 10;

    System.out.println(scores[0]);
    System.out.println(scores[1]);
    System.out.println(scores[2]);
  }
}
 sh -c javac -classpath .:target/dependency/* -d . $(find . -type f -name '*.java')
 java -classpath .:target/dependency/* Main
1
5
10
 

上記のコードについて解説します。
Javaの配列を使用する手順としては、
①配列の宣言を行う
②配列の要素を作成し、配列に代入する
③配列の要素に値を代入する

①配列の宣言を行う

int型の整数を格納する配列の宣言はint[] scores;と記述します。

int[] scores;

この「int」は要素として格納したいデータ型を指定するもので、例えばlong型の整数を格納する配列ならlong[] scores;のように宣言します。

この記述によって、配列という入れ物の宣言を行ったことになります。

②配列の要素を作成し、配列に代入する

scores = new int[3];

このうち、右辺の部分で「new int[3];」とし、
このコードで、int型の要素を3つ作成しています。
そして、配列scoresに代入します。
ここまでのコードによって、配列の宣言と、配列に3つの要素を代入する受け皿を用意することができました。

③配列の要素に値を代入する

最後に行うのが値の代入です。
先ほど以下のコードを記述しました。

	
scores[0] = 1;

配列scoresの1番目の要素に「1」を代入しています。
この書き方はRubyと似ていて、1番目」を表すインデックスとして「0」を指定することもRubyと同じです。

また、配列の要素を取り出すときは、以下のように行います。

scores[0]

この書き方もRubyと同じです。

配列を使う際の記述方法にはいくつかのバリエーションがあるようなので、記述していきます。

配列の様々な記述方法について

① 配列の宣言と同時に、要素の作成も行う方法

先ほど実行したコードでは、以下のように配列の宣言と要素の作成を別に行っていました。

int[] scores;
scores = new int[3];

この2つは、以下のように1行で記述することもできます。

int[] scores = new int[3];

②配列の宣言時に型推論を使用する方法

型推論を使った配列の宣言は以下のようになります。

var scores = new int[3];

int型の要素3つを代入することで、scoresはそれらを格納する配列であることが推論されています。

③ 配列の宣言から値の代入まで全て同時に行う方法

配列の宣言時に代入する値が確定している場合は、以下のように記述を省略することができます。

int[] scores = {1, 5, 10};

この記述方法が最も簡潔ですが、宣言時に代入する値が確定していない場合は使用できません。

リストについて

リストは、Rubyの配列と似たデータ管理の仕組みです。
以下の特徴があります。

要素を順序づけて管理する
要素を事後的に追加したり削除できる
また、Javaのリストには、以下の2種類があります。

ArrayList
LinkedList

ArrayListについて

ArraListは「可変長配列」を使用するための仕組みです。可変長配列とは、文字通り長さ(要素数)を変更できる配列のことです。

Rubyの配列は可変長なので、Javaの配列よりもArrayListの方が性質や使い方が近いものとなっています。

import java.util.ArrayList;

class Main {
  public static void main(String[] args) {
    ArrayList<Integer> scores = new ArrayList<Integer>();

    scores.add(1);
    scores.add(5);
    scores.add(10);
    scores.add(15);

    System.out.println(scores.get(0));
    System.out.println(scores.get(1));
    System.out.println(scores.get(2));
    System.out.println(scores.get(3));
  }
}

ArrayListを使用する際は、事前にライブラリのインポートが必要です。
上記のコードを記述する際は、1行目にimport文があることに注意しましょう。

 sh -c javac -classpath .:target/dependency/* -d . $(find . -type f -name '*.java')
 java -classpath .:target/dependency/* Main
1
5
10
15
 

上記で記述したコードでは、以下の4つを行なっています。

① ライブラリをインポートする
② ArrayListの宣言を行う
③ ArrayListに値を代入する
④ ArrayListから要素を取り出す

それぞれの使い方について確認します。

① ライブラリをインポートする

ArrayListを使用する際は、ライブラリのインポートが必要です。
インポートするには、ファイルの冒頭に以下の記述を行います。

import java.util.ArrayList;

② ArrayListの宣言を行う

ArrayListの宣言と初期化は以下のように行います。

ArrayList<データ型> scores = new ArrayList<データ型>();

先ほどのコードでは、整数を格納するArrayListを作成したので、以下のように記述しました。

ArrayList<Integer> scores = new ArrayList<Integer>();

ここで行っているのは、以下の2つの動作です。

① 整数(Integer)を格納するArrayListを「score」という名称で宣言
② ArrayListの要素を作成

そして、①に②を代入しています。

なお、要素のデータ型を右辺でも指定していますが、これは省略することが可能です。
以下のように記述しても問題なく動作します。

ArrayList<Integer> scores = new ArrayList<>();

③ ArrayListに値を代入する

ArrayListに要素を追加するためにはaddメソッドを使用します。

記述は、add(要素として追加する値)のように行います。

先ほど実行した以下のコードでは、scoresという名称のArrayListに「1」を追加しました。

scores.add(1);

addメソッドを使用すると、要素はArrayListの末尾に追加されます。

④ ArrayListから要素を取り出す

要素を取り出す際は、getメソッドを使用します。

記述は、get(取得したい要素のインデックス) のように行います。配列から要素を取り出す際と同様に、「1番目」の要素を取り出したい時は、インデックスとして「0」を指定します。

先ほど実行した以下のコードでは、scoresから、1番目の要素を取得しています。

scores.get(0)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0