Javaで連想配列っぽいことをしようとして

JavaPHPみたいな連想配列っぽいことできるのかなと思ってトライしたら、ソースコードの可読性が酷いことになってしまったけど、一応、実装できたのでソースコードを載せてみます。(残念なコードの例として)

Java連想配列っぽいもの

AssociativeArrayStyle.java

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class StreamTraining {

  public static void main(String[] args) {
    
    List<Map<String, Object>> products = new ArrayList<>();

    Map<String, Object> product;

    product = new LinkedHashMap<String, Object>();
    product.put("made", "日本");
    product.put("name", "こしひかり");
    product.put("quantity", 10);
    product.put("value", 3800);
    products.add(product);

    product = new LinkedHashMap<String, Object>();
    product.put("made", "アメリカ");
    product.put("name", "カリフォルニア米");
    product.put("quantity", 10);
    product.put("value", 2800);
    products.add(product);

    product = new LinkedHashMap<String, Object>();
    product.put("made", "中国");
    product.put("name", "黒米");
    product.put("quantity", 10);
    product.put("value", 3200);
    products.add(product);

    product = new LinkedHashMap<String, Object>();
    product.put("made", "バングラディッシュ");
    product.put("name", "カリジュラ");
    product.put("quantity", 10);
    product.put("value", 2400);
    products.add(product);

    product = new LinkedHashMap<String, Object>();
    product.put("made", "スリランカ");
    product.put("name", "レッドライス");
    product.put("quantity", 10);
    product.put("value", 3000);
    products.add(product);

    product = new LinkedHashMap<String, Object>();
    product.put("made", "スペイン");
    product.put("name", "バレンシア・ライス");
    product.put("quantity", 10);
    product.put("value", 3400);
    products.add(product);

    product = new LinkedHashMap<String, Object>();
    product.put("made", "イタリア");
    product.put("name", "カルナローリ");
    product.put("quantity", 10);
    product.put("value", 4000);
    products.add(product);

    int[] i = {0};
    int count = 0;
    StringBuilder builder = new StringBuilder();

    for(Map<String, Object> map: products) {
      if(count == 0) {
        System.out.println("[");
      }
      map.entrySet()
           .stream()
           .forEach(listMap -> {

             if(i[0] == 0) {
               builder.append("[");
             }

             builder.append(listMap.getKey());
             builder.append(": ");
             builder.append(listMap.getValue());

             i[0]++;
             if(i[0] != map.size()) {
               builder.append(", ");
             }

             if(i[0] == map.size()) {
               builder.append("]");
               System.out.print(builder);
               builder.setLength(0);
               i[0] = 0;
             }
      });
      count++;
      if(count != products.size()) {
        System.out.println(",");
      }

      if(count == products.size()) {
        System.out.println("\n]");
      }
    }
  }
}

実行結果

f:id:ts0818:20171119220526j:plain

Javaの復習していかねば...ですね。