Java Basic Arrays 〜多次元配列〜

イントロダクション

個人的にOpenCVの学習を行なっているところで、配列に関して触れていなかった事に気が付いたのでここで触れておこうと思います。

ちなみに、OpenCVで画像(imgデータ)を扱うのですが、これは平面画像だと2次元配列(縦、横の配列なので2次元配列)、そして、透過するデータを追加すると3次元。。。と配列のデータ量が増えていきます。

配列の解説

While文で配列をループするコードを解説していますが、配列に関しても解説しています。

多次元配列

論より証拠、ソースを見てみると一目瞭然ですが、配列のイメージは持っておくようにしましょう。上の動画を見てもらえれば簡単なイメージが作れると思います。

サンプルコード

下のリンクはGithubへのリンクになります。コードの全体があり、コピペもしやすいと思われます。
そして、プログラムの内容に関しては次の通りです。

  1. String型の1次元配列「lv1Array」を宣言します。
  2. 同様に2次元配列「lv2Array」を宣言します。
  3. 3次元配列「lv3Array」を宣言。
  4. 1次元配列をFOR文で表示します。
  5. 2次元配列を2次元ループで表示します。※2次元ループはFOR文が2階層あります。
  6. 3次元配列を3次元ループで表示します。※3次元ループはFOR文が3階層あります。

Sample_Array.java

public class Sample_Array {
  /** メインメソッド */
    public static void main(String[] args) {
        // 1次元配列
        String[] lv1Array = new String[] {"a", "b", "c"};
        // 2次元配列
        String[][] lv2Array = new String[][] {{"a", "b", "c"}, {"d", "e", "f"}};
        // 3次元配列
        String[][][] lv3Array = new String[][][] {
            {{"a", "b", "c"}, {"d", "e", "f"}}
            ,{{"g", "h", "i"}, {"j", "k", "l"}}
            ,{{"m", "n", "o"}, {"p", "q", "r"}}
            };
        // 1次元配列を表示する
        System.out.println("*** 1次元配列を表示 ***");
        for (String nakami : lv1Array) {
            printf("", nakami);
        }
        // 2次元配列
        System.out.println("\n*** 2次元配列を表示 ***");
        for (String[] nakamiLv2 : lv2Array) {
            for (String nakami : nakamiLv2) {
                printf("", nakami);
            }
        }
        // 3次元配列
        System.out.println("\n*** 3次元配列を表示 ***");
        for (String[][] nakamiLv3 :lv3Array) {
            for (String[] nakamiLv2 : nakamiLv3) {
                for (String nakami : nakamiLv2) {
                    printf("", nakami);
                }
            }
        }
    }
        /** コンソール出力メソッド */
    private static void printf(String label, String value) {
        System.out.print(label + "" + value);
    }
}

実行結果が下になります。

<理解の仕方>

=>理解の仕方は人それぞれなので自分の中でイメージを作ってください。

ちなみに、配列にはint型の配列、文字列型の配列。。。などいろいろありますが、「XXX型の変数」があれば、「XXX型の配列」があります。

筆者の場合

筆者の場合は、以下のようなイメージを持っています。

変数

小さな段ボール箱のイメージで持っています。そこに数値型、文字、文字列型、クラス型の値を入れる(セット)するイメージです。

配列

配列になると上記の段ボールより大きい段ボールをイメージします。

次元数が増えると段ボールもより大きくなります。

1次元配列

1次元配列は変数が、おおきな箱の中に並ぶようなイメージを持っています。

String[] hako = new String[] {"1XX", "2XX", "3XX" ...};
hako[0] => "1XX"
hako[1] => "2XX"
hako[2] => "3XX"

2次元配列は変数が、さらに大きな箱の中に並ぶようなイメージを持っています。

String[][] hako = new String[][]{{{"11X", "12X", "13X"},{"21X", "22X", "23X"},{"31X", "32X", "33X"} ...};
hako[0][0] => "11X"
hako[0][1] => "12X"
hako[0][2] => "13X"
hako[1][0] => "22X"
hako[1][1] => "22X"
hako[1][2] => "22X"

こんな感じです、実際には目に見えるものではないので「イメージ」になってしまいます。プログラムを実行すれば「結果」をみることができるのでより具体的なイメージができると思います。

関連ページ一覧

OpenCVで画像解析の基本を学ぶ

  1. Java OpenCV Lv4 〜画像の中身をみてみる〜「画像データは配列になっている」

<Java Step1〜ミニゲーム作成>

投稿者:

takunoji

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

コメントを残す