ハッシュマップ(連想配列)

      ハッシュマップ(連想配列) はコメントを受け付けていません

Processingには通常の1次元配列、2次元配列、動的配列の他にも、ハッシュマップ(連想配列)という便利な機能があります。JSONやXMLなどは、このハッシュマップを外部ファイルに保存したものだと考えてもいいでしょう。

import java.util.Map;  //ハッシュマップの機能をインポート
import java.util.HashMap;
import java.util.Arrays;

//空のハッシュマップを作成
//keyに使うデータ型と、valueに使うデータ型を指定
HashMap<String, Integer> hm = new HashMap<String, Integer>();

//ハッシュマップにkeyとvalueのセットを追加
hm.put("斉藤さん", 15);
hm.put("中野さん", 35);
hm.put("鈴木さん", 60);

// ハッシュマップの中にある要素を全て順番に取り出す
for (Map.Entry me : hm.entrySet()) {
  println(me.getKey() + " は " + me.getValue() + "才");
}

//ハッシュマップの中身が空かどうかをチェック
println( "Is Empty? " + hm.isEmpty());

//keyが"中野さん"のvalueを取り出す
println("中野さんは " + hm.get("中野さん"));

//ハッシュマップの要素数
println( "要素数: " + hm.size());

//keyが"中野さん"のkeyとvalueのセットを削除
println( "削除: " + hm.remove("中野さん"));

//ハッシュマップの要素数を再度確認
println( "要素数(削除後): " +hm.size());

//keyが"中野さん"の要素があるかを確認
println( "'中野さん'を含む要素: " + hm.containsKey("中野さん"));

もう一つ試してみましょう。

import java.util.HashMap; // HashMapを使うために必要な命令

void setup() {
  size(600, 100); // キャンバスのサイズ(横600ピクセル、縦100ピクセル)
  background(255); // 背景を白にする

  // HashMapを作成。キーは色の名前(文字列)、値はRGBの配列(整数の配列)
  HashMap<String, Integer[]> palette = new HashMap<String, Integer[]>();

  // HashMapに色を登録する
  // たとえば「"red"」という名前に [239, 71, 111] という赤系の色を対応させている
  palette.put("red", new Integer[]{239, 71, 111});
  palette.put("yellow", new Integer[]{255, 209, 102});
  palette.put("green", new Integer[]{6, 214, 160});
  palette.put("blue", new Integer[]{17, 138, 178});
  palette.put("dark", new Integer[]{7, 59, 76});

  // 全体の横幅を、色の数で割って、1つの色の幅を決める
  int numColors = palette.size();        // HashMapに登録された色の数
  int rectWidth = width / numColors;     // 1つの四角の幅
  int index = 0;                          // 何番目の四角かを数えるための変数

  // HashMapの中のキー(色の名前)を順番に取り出していく
  for (String key : palette.keySet()) {

    // 色の値(RGBの配列)を取り出す
    Integer[] rgb = palette.get(key);

    // 塗りの色を設定(RGBそれぞれの値を指定)
    fill(rgb[0], rgb[1], rgb[2]);
    noStroke(); // 線なしで四角を描く

    // 四角を描画。位置は index によってずらしていく
    rect(index * rectWidth, 0, rectWidth, height);

    // 色の名前を文字で表示する(白文字)
    fill(255); // 白色
    textAlign(CENTER, CENTER); // テキストを中央揃えにする
    textSize(14); // 文字の大きさ
    text(key, index * rectWidth + rectWidth / 2, height / 2);

    // 次の位置に進むために index を増やす
    index++;
  }
}