@blog.justoneplanet.info

日々勉強

Javaの拡張forループ

以下のような記法は、java.lang.Iterableインターフェースを実装しているコレクションクラスに対して使用することができる。

import java.util.ArrayList;

public class HelloWorld
{
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();
        list.add("hoge");
        list.add("fuga");
        list.add("piyo");
        for(String value : list){
            System.out.println(value);
        }
    }
}
/*
hoge
fuga
piyo
*/

また、以下のように配列に対しても使用することができる。

import java.util.ArrayList;

public class HelloWorld
{
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();
        list.add("hoge");
        list.add("fuga");
        list.add("piyo");
        for(String value : list){
            System.out.println(value);
        }
        
        String[] ary = new String[3];
        ary[0] = "hoge";
        ary[1] = "fuga";
        ary[2] = "piyo";
        for(String value : ary){
            System.out.println(value);
        }
    }
}

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

■java.util.ArrayList

定義時に要素数を指定する必要がなく、それによる要素追加に対する制約がない。

import java.util.ArrayList;

public class HelloWorld
{
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();
        list.add("hoge");
        list.add("fuga");
        list.add("piyo");
        list.remove(1);
        System.out.println(list);// [hoge, piyo]
    }
}

■java.util.HashSet

  • 順序は保持しない
  • 同一のオブジェクトは1つしか存在しない
import java.util.HashSet;

public class HelloWorld
{
    public static void main(String[] args)
    {
        HashSet<String> list = new HashSet<String>();
        list.add("dog");
        list.add("cat");
        list.add("rabbit");
        list.add("fox");
        list.add("cat");
        list.add("dog");
        list.remove("rabbit");
        System.out.println(list);// [cat, fox, dog]
    }
}

集合だよね。

■java.util.HashMap

連想配列ですな。

import java.util.HashMap;

public class HelloWorld
{
    public static void main(String[] args)
    {
        HashMap<String, String> hash = new HashMap<String, String>();
        hash.put("ID12345", "yamada");
        hash.put("ID12346", "tanaka");
        hash.put("ID12347", "suzuki");
        hash.put("ID12348", "ishimoto");
        hash.remove("ID12348");
        System.out.println(hash.get("ID12345"));// yamada
        System.out.println(hash);// {ID12346=tanaka, ID12345=yamada, ID12347=suzuki}
    }
}

Javaの配列

■宣言

以下のようにして配列を宣言することができる。

public class HelloWorld
{
    public static void main(String[] args)
    {
        int ary[] = new int[3];
        ary[0] = 3;
        ary[1] = 1;
        ary[2] = 4;
        for(int i = 0; i < ary.length; i++){
            System.out.println(Integer.toString(ary[i]));
        }
    }
}

上述では、長さ3のint型の配列が生成されている。また、lengthプロパティに配列の長さが格納されている。

文字列の場合

以下のように、上述と全く変わらない。

public class HelloWorld
{
    public static void main(String[] args)
    {
        String ary[] = new String[3];
        ary[0] = "hoge";
        ary[1] = "fuga";
        ary[2] = "piyo";
        for(int i = 0; i < ary.length; i++){
            System.out.println(ary[i]);
        }
    }
}

二次元配列

以下のようにして二次元配列を生成することができる。

public class HelloWorld
{
    public static void main(String[] args)
    {
        String ary[][] = new String[2][2];
        ary[0][0] = "hoge";
        ary[0][1] = "fuga";
        ary[1][0] = "piyo";
        ary[1][1] = "baca";
        for(int i = 0; i < ary.length; i++){
            for(int i2 = 0; i2 < ary[i].length; i2++){
                System.out.println(ary[i][i2]);
            }
        }
    }
}

ちなみに以下のように配列はクローンが作られるわけではないので注意すること!

public class HelloWorld
{
    private static String[][] convert(String ary[][])
    {
        for(int i = 0; i < ary.length; i++){
            for(int i2 = 0; i2 < ary[i].length; i2++){
                if(ary[i][i2] == "hoge"){
                    ary[i][i2] = "aho";
                }
            }
        }
        return ary;
    }
    
    public static void main(String[] args)
    {
        String ary[][] = new String[2][2];
        ary[0][0] = "hoge";
        ary[0][1] = "fuga";
        ary[1][0] = "piyo";
        ary[1][1] = "baca";
        String ary1[][] = convert(ary);
        for(int i = 0; i < ary.length; i++){
            for(int i2 = 0; i2 < ary[i].length; i2++){
                System.out.println(ary[i][i2]);
            }
        }
        for(int i = 0; i < ary1.length; i++){
            for(int i2 = 0; i2 < ary1[i].length; i2++){
                System.out.println(ary1[i][i2]);
            }
        }
    }
}
/*
aho
fuga
piyo
baca
aho
fuga
piyo
baca
*/