Java Basic Level 8.5 〜配列(Array)の使い方:補足〜

イントロダクション

For文の学習を始めたのは良いけれど、配列の知識が必要なので急遽配列の勉強をします。
主に、配列はたくさんのデータを扱うときに使用します。以下に例を示します。

配列のイメージ

プログラムで物事を処理するときには、大体目に見えないものば仮です。具体的には、「オブジェクト」と呼ばれているものがそうです。
イメージする事でしかこの存在を具体化できません。※自分にはそう思っていますが、もしかしたらできる人がいるかも?

そんなわけで、筆者の配列、変数に対するイメージは、ズバリ段ボールです。
変数にデータをセット、同じように変数の連結されたもの「配列」という認識です。
配列は、各データ型の配列があります。具体的には下のようなものです。

int[] intArray;
double[] doubleArray;
long[] longArray;
byte[] byteArray;
MyClass[] myClassArray;

筆者の場合は、それらの配列はいろんな型がハコになって並んでいるイメージです。下の画像はINT型の配列です。このINT型がDOUBLEだったり、MyClassだったりする、違いがあるだけです。

<配列とリテラルに関して>

配列を使用するとき

下のようなものを扱うときによく使用します。

  1. CSVファイル(人口統計の地域ごとに集計したデータなど)の読み込み
  2. DBから取得したデータの読み込み

そのほか、やはり沢山のデータを扱うときに使用します。この配列をクラスとして使用しているのがListインターフェース・クラスです。

<データの取得サンプルコード>
DBに接続してSQLを実行した結果を取得しています。IDをリストで取得しています。

Properties prop = new Properties();
prop.put("ユーザーのキー", "ユーザー名");
prop.put("パスワードのキー", "パスワード");
Connection con = DriverManager.getConnection("DBのURL", prop);
ResultSet rs = con.executeQuery("SELECT * FROM MYTABLE");
List<ID> list = rs.get(0);

<Listインターフェースのサンプル動画>

余談ですが、このListインターフェース・クラスは、良く「インターフェース」と呼ばれています。しかし、サーバー同士のデータ通信でも「インターフェース」という言葉を使います。結論から言うと「インターフェース」はいろんな場面でいろんな意味で使われるので「オブジェクト指向」という言葉と同じようにカオス化しやすい言葉です。注意しましょう。

そして、このListインタフェースは実装されているクラスが2つあり、ArrayListLinkedListというクラスがあります。

それぞれ、特徴がありますが、よく使われるのがArrayListで、可変長配列の実装になります。※Javaを作った人たちが作成したプログラムということです。

Introduction

Start a studying For statement. But we need knowledge of array. That’s why we will study array.

配列とは…

連結した変数の箱です。※自分のイメージです。

4の5の言わずに、サンプルコードを見て見ましょう

変数には、それぞれの型がありました。配列も同様です。
int型の配列、double型の配列、String型の配列。。。沢山あります。

public class TestA {
    public static void main(String[] rags) {
       // 普通の変数
       int num = 1;
       double d = 1.2;
       String moji = "これは文字です";
       // 配列の変数
       int[] numArr = {1, 2, 3};
       double[] dArr = {0.1, 0.2, 0.3};
       String[] strArr = new String[]{"a", "b", "c"};

       // int型の配列表示
       System.out.println(“numArr[0]=“ + numArr[0]);
       System.out.println(“numArr[1]=“ + numArr[1]);
       System.out.println(“numArr[2]=“ + numArr[2]);
       // double型の配列表示
       System.out.println(“dArr[0]=“ + dArr[0]);
       System.out.println(“dArr[1]=“ + dArr[1]);
       System.out.println(“dArr[2]=“ + dArr[2]);
       // String型の配列表示
       System.out.println(“strArr[0]=“ + strArr[0]);
       System.out.println(“strArr[1]=“ + strArr[1]);
       System.out.println(“strArr[2]=“ + strArr[2]);
    }
}

配列の宣言と初期化

配列ではない変数は「int 変数名」の様に宣言します。

// 変数の宣言
int num;
// 変数の初期化
int num1 = 10;

配列の変数に関しては「int[] 変数名」の様に宣言します。

// 変数の宣言
int[] numArray;
// 変数の初期化①配列の中身を初期化する
int[] numArray1 = new int {0, 1, 2};
// 変数の初期化②配列の要素数(セットできるデータの数)を指定する
int[] numArray = new int[2]

使い方は上記のサンプルを参考にしてください。

Array is ...

Linked Box. ※On my mind

Without hesitation. See a sample code. Look at upper sample.

we use single variable like this ”int ‘Variable’”.

Array is like this “int[[] ‘Valiable’”

<問題>

配列を以下の様に表示するプログラムを作成してください。

====== 例(Sample) ======
配列[0]=1
配列[1]=2
配列[2]=3
配列[3]=4
配列[4]=5

ループ文と併用する

DBからデータを取得した場合の処理の例。
※DBから取得したデータは全部文字列(String)型とする、取得したデータは複数あるので配列になっていることが多い。
これは、使用しているAPIの仕様によります。

// DBクラスでSQLをセットして、実行する。
String[] strArr =DB.setQuery("select * from myTable").execute();

for (int i = 0; i < strArr.length(); i++) {
  // 取得したデータを表示する。
  System.out.println("取得したデータ:" + strArr[i]);
}

実際に動かしてみる

実行したときの動画です。

余計な音が入っています、

こちらも、余計な音が入っています。

<<< 前回 次回 >>>

 



投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す