サイトアイコン 上尾市のWEBプログラマーによるブログ

「スッキリわかるJava入門 第3版」の感想・備忘録2

「スッキリわかるJava入門 第3版」の感想・備忘録1の続き

文字列

コレクション

Listインターフェース

java.util.ArrayListクラス: サイズ指定不要な配列

ArrayList<String> names = new ArrayList<String>();
names.add("山田");
System.out.println(names.get(0)); 
配列との違い

コレクションフレームワークはインスタンスしか格納することができないため、プリミティブ型はラッパークラスを使う必要がある。
ただし、Javaにはラッパークラスのインスタンスとプリミティブ型データを自動変換するオートボクシングという機能が備わっているため、いちいちInteger.valueOf(1)のようにする必要はない。
そのため、型の宣言はジェネリクスでIntegerを指定するが、int型の値を追加することができる。

ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(100);
nums.add(333);
for (int number: numbers) {
  System.out.println(number); 
}

Setインターフェース

java.util.HashSetクラス

HashSet<String> colors = new HashSet<String>();
  colors.add("赤");
  colors.add("青");
  colors.add("青");
  for (String color: colors) {
    System.out.println(color); // 赤 青
  }
}

Mapインターフェース

要素をkeyとvalueのペアとして格納する。

java.util.HashMapクラス

HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("hoge1", 100);
map.put("hoge2", 333);
System.out.println(map.get("hoge2")); 

Mapは拡張for文を使うことができないので、keySetメソッドで取得したキーの配列を拡張for文で回すのが一般的。

for (String key: map.keySet()) {
  System.out.println(map.get(key)); 
}

ファイルの読み書き

ファイル読み込み

FileReader fr= null;
try {
  fr = new FileReader("./SukkiriwakaruJava/MANIFEST.MF");
  int input;
  while ((input = fr.read()) != -1) {
    System.out.print((char)input);
  }
} catch (Exception e) {
  e.printStackTrace();
} finally {
  if (fr != null) {
    try {
      fr.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

ファイル書き込み

FileWriter fw= null;
try {
  fw = new FileWriter("test.txt");
  fw.write("おはよう");
} catch (Exception e) {
  e.printStackTrace();
} finally {
  if (fw != null) {
    try {
      fw.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

WEBページ取得

InputStream is = null;
InputStreamReader isr = null;
try {
  URL u = new URL("https://google.com");
  is = u.openStream();
  isr = new InputStreamReader(is, "UTF-8");
  int input;
  while ((input = isr.read()) != -1) {
    System.out.print((char)input);
  }
} catch (Exception e) {
  e.printStackTrace();
} finally {
  if (is != null) {
    try {
      is.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  if (isr != null) {
    try {
      isr.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
モバイルバージョンを終了