1

この記事の目次



1.  配列とは


  • 配列とは、同じ型の複数の値をまとめて一つの変数として扱うことができるデータ構造です。
  • 配列の一つ一つの値を要素と言います、配列の各要素は同一種のデータしか格納できません。
  • 配列の要素は0番目から数えます。例:["みかん","ぶどう","かき"]という果物配列において、配列の0番目の要素は「みかん」を表します。2番目の要素は「かき」になります。
  • 2.  配列の作成


     ●  配列変数の宣言

    型名[] 配列変数名;
    配列変数名 = new 型名[要素数];
    型名 配列変数名[] = new 型名[要素数];

    配列を宣言するときに配列の要素数も宣言しなければなりません。

    int[] array1;  //int[]型のarray1配列を宣言する
    array1 = new int[3];  //array1配列の要素数は3と宣言する
    
    int array2[] = new int[3];   //array2配列の型と要素数を同時に宣言する 

    注意 : int[]型はint型と似ていますが、全く異なる型なので注意してください。int[]型は「int型の要素が代入できる型」だと理解すればいいです。array1配列の型はint[]型で、array1配列の要素の型はintになります。

     ●  要素の代入

    配列変数名[インデックス] = 値;
  • 配列の各要素は配列変数名[インデックス]で表し、インデックスとは、配列の何番目かを表す数値です。
  • インデックスは0から始まることに注意してください。
  • package helloworld;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
             
            int[] age;
            age = new int[3];
            
            //age配列に要素を入れる
            age[0] = 20;  //age配列の0番目に20を入れる
            age[1] = 30;  //age配列の1番目に30を入れる
            age[2] = 40;  //age配列の2番目に40を入れる
            
            System.out.println("age配列の0番目の要素の値は: " + age[0]);
            System.out.println("age配列の1番目の要素の値は: " + age[1]);
            System.out.println("age配列の2番目の要素の値は: " + age[2]);
            
        }
    }

    実行結果:
    age配列の0番目の要素の値は: 20
    age配列の1番目の要素の値は: 30
    age配列の2番目の要素の値は: 40

     ●  配列の宣言と同時に要素の代入を実行

    型名 配列変数名[] = {値1, 値2, ... };
  • この宣言仕方では、配列の大きさを宣言しなくても、要素は決まっているので、要素数もそれにより、定まります。;Arrayの要素数は固定ですが、ArrayListの要素数は可変です。
  •  JAVAのArrayListについて詳しく見たい方:

    JAVAのArrayList

    ../../../java/java-collection-arraylist.html

    この記事ではListを実装したクラスの一つであるArrayListを紹介します。ArrayListは大きさが可変という点でたくさんの応用があるので、開発現場でよく・・・
    package helloworld;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            //配列の宣言と初期化
            int age[] = {20,30,40};
            
            System.out.println("age配列の0番目の要素の値は: " + age[0]);
            System.out.println("age配列の1番目の要素の値は: " + age[1]);
            System.out.println("age配列の2番目の要素の値は: " + age[2]);
            
        }
    }

    実行結果:
    age配列の0番目の要素の値は: 20
    age配列の1番目の要素の値は: 30
    age配列の2番目の要素の値は: 40

    3.  配列の取り扱い


     ●  lengthで要素数を取得

    配列変数名.length
  • lengthは配列の要素数を取得する配列の特別な構文です。
  • 出力はint型の値です。
  • import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
             
            //配列の宣言と初期化
            int age[] = {20,30,40};
            
            int ageLength = age.length;
             
            System.out.println("age配列の要素数は: " + ageLength);
             
        }
    }

    実行結果:
    age配列の要素数は: 3

     ●  for文と配列

    配列の要素を表示し、取り扱いたい時に、for文を利用することが多いです。

    主に、for文で配列の表示方法は以下の二つの方法です。

    従来のfor文

    for (int i = 0 ; i < 配列変数名.length ; i++){
    
        配列の要素などの処理
    
    }

    このようにfor文を用いて配列の各要素を0番目から最後(leng配列変数名.length)までの順番に取り出したり、それに対して何らかの処理を行います

    package helloworld;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            //配列の宣言と初期化
            int age[] = {45,20,30,25,35,40,15};
            
            // 配列ageを表示
            System.out.print("age配列の要素: ");
            for (int i = 0; i < age.length; i++) {
                System.out.print(age[i] + " ");
            }
           
        }
        
    }

    実行結果:
    age配列の要素: 45 20 30 25 35 40 15 

    拡張for文

    for (要素の型  任意の変数名 : 配列変数名){
    
        配列の要素などの処理
    
    }

    拡張for文は配列の要素を1つずつ取り出すループを簡単に書くための文法です。ループが1周するたびに次の要素の内容が「任意の変数名」で指定した変数に格納されるため、ブロックの中ではその変数を利用して要素を取り出します。

    package helloworld;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            //配列の宣言と初期化
            int age[] = {45,20,30,25,35,40,15};
            
            // 配列ageを表示
            System.out.print("age配列の要素: ");
            for (int i : age) {
                System.out.print(i + " ");
    	}
           
        }
        
    }

    実行結果:
    age配列の要素: 45 20 30 25 35 40 15 

     ●  Arrays.sortで要素をソート

    昇順 : Arrays.sort(配列変数名);
    降順 : Arrays.sort(配列変数名,  Collections.reverseOrder());
  • Arraysクラスのsortメソッドは配列の要素を順番に並び替えるメソッドです。
  • import文import java.util.Arraysは必要です。
  • 特に、降順に並べたい時に、CollectionsクラスのreverseOrderメソッドを使うため、import java.util.Collectionsが必要です。また、Collectionsクラスを使う場合は、ソートする配列にはInteger型などのクラス型を指定する必要があります。int型などのプリミティブ型を指定するとエラーが発生するので、注意しましょう。
  • package helloworld;
    import java.util.Arrays;
    import java.util.Collections;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            //配列の宣言と初期化
            Integer age[] = {45,20,30,25,35,40,15};
            
            //age配列を昇順にソートする
            Arrays.sort(age);
            // 配列ageを表示
            System.out.print("昇順にしたage配列: ");
            for (Integer i = 0; i < age.length; i++) {
                System.out.print(age[i] + " ");
    	}
            
            //age配列を降順にソートする
            Arrays.sort(age, Collections.reverseOrder());
            // 配列ageを表示
            System.out.print("
    降順にしたage配列: ");
            for (Integer i = 0; i < age.length; i++) {
                System.out.print(age[i] + " ");
    	}
           
        }
        
    }

    実行結果:
    昇順にしたage配列: 15 20 25 30 35 40 45 
    降順にしたage配列: 45 40 35 30 25 20 15

     ●  System.arraycopyで配列をコピーし、結合する。

    System.arraycopy (コピー元配列変数名, コピー元の開始位置,コピー先配列変数名, コピー先の開始位置,コピーする要素の数 )

    System.arraycopyメソッドはある配列の要素を別の配列にコピーするSystemクラスのメソッドです。

    このメソッドを利用する目的は主に配列のコピーと、配列の結合です。

    * 配列のコピー

    package helloworld;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            //配列の宣言と初期化
            int age1[] = {45,20,30,25,35,40,15};
            
            //新配列の宣言
            int age2[] = new int[10];
            
            //配列age1のすべての要素を配列age2にコピーする
            System.arraycopy(age1,0,age2,0,age1.length);
            
            // 配列age2を表示
            System.out.print("age2配列の要素: ");
            for (int i = 0; i < age2.length; i++) {
                System.out.print(age2[i] + " ");
            }
           
        }
        
    }

    実行結果:
    age2配列の要素: 45 20 30 25 35 40 15 0 0 0
    説明 : System.arraycopy(age1,0,age2,0,age1.length)で配列age1の0番目から配列age2の0番目にage1.length要素をコピーしました。しかし、最初に宣言した配列age2の要素数は10だったので、7、8、9番目の要素は0のままになりました。

    * 配列の結合

    System.arraycopyメソッドを利用して、元の二つの配列から新配列にコピーすることができます、つまり元の2つの配列から新配列に結合できます。

    package helloworld;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            //配列の宣言と初期化
            int age1[] = {45,20,30,25,35,40,15};
            
            //配列の宣言と初期化
            int age2[] = {9,99,999};
            
            //新配列の宣言
            int age3[] = new int[age1.length + age2.length];
            
            //配列age1のすべての要素を配列age3の0番目からにコピーする
            System.arraycopy(age1,0,age3,0,age1.length);
            //配列age2のすべての要素を配列age3の「age1.length」番目からにコピーする
            System.arraycopy(age2,0,age3,age1.length,age2.length);
            
            // 配列age3を表示
            System.out.print("age3配列の要素: ");
            for (int i = 0; i < age3.length; i++) {
                System.out.print(age3[i] + " ");
            }
           
        }
        
    }

    実行結果:
    age3配列の要素: 45 20 30 25 35 40 15 9 99 999

     ●  ArrayからArrayListに

  • ArrayとArrayListの大違いはArrayの要素数は固定で、ArrayListの要素数は可変です。
  • ArrayListの要素操作にたくさんのメソッドが用意されています。
  • Arrays.asList(age)のように、配列ageをListに変換することができます。
  •  JAVAのArrayListについて詳しく見たい方:

    JAVAのArrayList

    ../../../java/java-collection-arraylist.html

    この記事ではListを実装したクラスの一つであるArrayListを紹介します。ArrayListは大きさが可変という点でたくさんの応用があるので、開発現場でよく・・・

    4.  まとめ


    ここまではいかがでしょうか?配列についてよくわかりましたか?

    この記事では配列の宣言、初期化、追加などの基本操作、配列の要素の取り扱いに関するメソッドなどを紹介しました。次は配列に関する演習問題を挑戦してみてください。

    5.  演習問題


    広告