HOME > ジェネリック

ジェネリック

ジェネリックはJ2SE 5.0から導入された機能で、List型やMap型などに入れる型をあらかじめ規定しておける仕組みです。ジェネリックを使うと以下のようなメリットがあります。


 ・List型やMap型にどんな型が入っているかすぐ分かる。
 ・List型やMap型から値を取り出すときにキャストが不要。
 ・違う型をセットしたらコンパイル時点で分かる。

サンプルソースコード

 ジェネリックを使ったサンプル

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListSample {

    public static void main(String args[]) {

        //String型を格納するArrayListの生成
        ArrayList<String> al = new ArrayList<String>();
        al.add("A");
        al.add("B");
        al.add("C");
        //al.add(new Integer(10));    ←String型でないためコンパイル時点でエラーとなる

        //ArrayListを1件ずつ取り出し画面に表示する
        Iterator<String> it = al.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());  //←キャストが不要
        }

    }

}

実行結果

 コマンドプロンプト

C:\>java ArrayListSample
A
B
C

以下、いろいろなジェネリックの書き方サンプルです。

 Integer型を保持するList

List<Integer> list = new ArrayList<Integer>();
list.add(100);
list.add(200);
list.add(300);

 キーがString型、値がInteger型を保持するMap

Map<String, Integer> map = new HashMap<String, Integer>();
map.put("KEY1", 100);
map.put("KEY2", 200);
map.put("KEY3", 300);

 String型のListを保持するList

List<List<String>> list = new ArrayList<List<String>>();

List<String> param1 = new ArrayList<String>();
param1.add("A");
param1.add("B");

List<String> param2 = new ArrayList<String>();
param2.add("X");
param2.add("Y");

list.add(param1);
list.add(param2);

 String,Integer型のMapを保持するList

List<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>();

Map<String, Integer> map1 = new HashMap<String, Integer>();
map1.put("KEY1", 100);
map1.put("KEY2", 200);

Map<String, Integer> map2 = new HashMap<String, Integer>();
map2.put("KEY1", 300);
map2.put("KEY2", 400);

list.add(map1);
list.add(map2);

コレクションカテゴリ