トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Javaの文法:配列とコレクション

配列

 配列とは

  • 同じ名前で参照される複数の変数を定義したい場合に用いる。添え字と呼ばれる数字で参照される。

 配列の構文

配列の定義

<配列の型>[] <配列名> = new <配列の型>[<作成する数>];

配列へのアクセス

<配列名>[添字]

 配列の添字

  • 添字番号は0から始めるため、配列の最初の変数は<配列名>[0]となり、配列の数が10の場合には、配列の添字は0-9となる。そのため、各配列へアクセスするループは以下のようになる。

 配列の初期化

  • プリミティブ型の配列は初期化されているが(例えば、int型であれば0で初期化されている)、オブジェクト型の配列は初期化されていないため、用いる前に何らかの形で初期化する必要がある。初期化していない場合にはnullが入っている。

 配列の例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package sample.collection;

//配列の添え字2倍した値を逆順に表示するサンプル
public class ArraySample1 {
    public static void main(String[] args) {
        int[] arrays = new int[10];
        for (int i = 0; i < arrays.length; i++) {
            arrays[i]=(9-i)*2;
        }
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(i+"->"+arrays[i]);
        }
    }

}

 二次元配列あるいは高次元配列

  • []を追加することで高次元の配列を作成することができる。

コレクションフレームワーク

 コレクションフレームワークとは

  • 集合を扱うための便利なクラス群のこと。java.util以下のCollection及びCollectionインターフェースを実装しているクラス群のこと。また、配列に対する操作を行うArraysユーティリティクラスも実装している。
  • データ集合をプログラムで扱う場合に、配列よりもコレクションフレームワークを用いる方が大きさの動的な変更が可能であるなど柔軟性がある。

 Collectionインターフェース

Iteratorインターフェースを実装し、JavaSE5以降であればforeach文によってCollectionの全ての要素にアクセスできる。

Iteratorインターフェース

  • Iteratorインターフェースを実装したCollectionに対しては、クラスの詳細な実装を気にすることがなく、データの内容を列挙できる。⇒ foreach文

 Listインターフェース

  • 同じ値が複数あることを許すCollectionの実装

 Setインターフェース

  • 値の重複を許さないCollectionの実装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package sample.collection;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class SimpleCollection1 {
    private static int[] originalValues = {1,2,3,3,3,4,5};
    public static void main(String[] args) {
        //Listの場合
        System.out.println("Listの場合");
        List<Integer> listValues = new ArrayList<Integer>();
        for (int i = 0; i < originalValues.length; i++) {
            listValues.add(originalValues[i]);
        }
        for (int intValue : listValues) {
            System.out.println("Listの値:"+intValue);
        }
        //Setの場合
        System.out.println("Setの場合");
        Set<Integer> setValues = new HashSet<Integer>();
        for (int i = 0; i < originalValues.length; i++) {
            setValues.add(originalValues[i]);
        }
        for (int intValue : setValues) {
            System.out.println("Setの値:"+intValue);
        }
    }
}

 Mapインターフェース

  • キー(key)と値(value)の二つの変数を持ち、それら二つを関連付けて、キーから値を探すことができるようにしたCollectionの実装。

データの列挙法

  • keySet()メソッドでキーの集合(Set)、values()メソッドで値の集合を得ることができる。
  • 一般的にはキーと値のペアとしてアクセスすることが多いため、キーと値のペアであるMap.EntryをentrySet()メソッドで取得し、それに対するforeach文を実行し、各Entryのキーと値にそれぞれアクセスすることになる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package sample.collection;

import java.util.HashMap;
import java.util.Map;

public class SimpleCollection2 {
    public static void main(String[] args) {
        HashMap<String, String> 鳴き声 = new HashMap<String, String>();
        鳴き声.put("犬", "ワンワン");
        鳴き声.put("猫", "ニャアニャア");
        鳴き声.put("鶏", "コケコッコー");
        鳴き声.put("鶯", "ホーホケキョ");
        鳴き声.put("象", "パオーン");
        鳴き声.put("ガラガラ蛇", "...");
        for (Map.Entry<String, String> entry : 鳴き声.entrySet()) {
            System.out.println(entry.getKey()+"->"+entry.getValue());
        }
    }
}
ArraySample1.java SimpleCollection1.java SimpleCollection2.java

最終更新時間:2007年06月28日 15時25分46秒