Map[] states = {
new HashMap<>() {{ put(' ', 0); put('s', 1); put('d', 2); put('.', 4); }}, // 0.
new HashMap<>() {{ put('d', 2); put('.', 4); }}, // 1.
new HashMap<>() {{ put('d', 2); put('.', 3); put('e', 5); put(' ', 8); }}, // 2.
new HashMap<>() {{ put('d', 3); put('e', 5); put(' ', 8); }}, // 3.
new HashMap<>() {{ put('d', 3); }}, // 4.
new HashMap<>() {{ put('s', 6); put('d', 7); }}, // 5.
new HashMap<>() {{ put('d', 7); }}, // 6.
new HashMap<>() {{ put('d', 7); put(' ', 8); }}, // 7.
new HashMap<>() {{ put(' ', 8); }} // 8.
};
Map[]states={}的括号{}中是像数组一样存放的吗?
new HashMap<>() {{ put(' ', 0); put('s', 1); put('d', 2); put('.', 4); }}中为啥要加两个{{}}
Map[]states={}的括号{}中是像数组一样存放的吗?
是的
new HashMap<>() {{ put(' ', 0); put('s', 1); put('d', 2); put('.', 4); }}中为啥要加两个{{}}
第一个 new HashMap<>() {}
表示 HashMap 类匿名内部类,可以理解为 HashMap 的一个实现,里面的括号和静态代码块类似,只是在类实例化的时候会先执行,也就是说代码中的 put
主要用于实例化类 HashMap 的匿名类时添加键值对。
Map[]states={}声明map集合的同时给map赋值。
外层两个括号,是创建map对象的括号,里面的是向对象放map数据的括号
1、Map[] 这个的写法就跟 常见的int[] 是一样的,即定义了一个数组,里面放的是Map类型的。所以Map[]states={}的括号{} 也就是数组在进行静态初始化。
2、为啥要加两个{{}}
外层的 {} 是 定义了一个匿名内部类 (Anonymous Inner Class),
内层的 {} 是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行
相当于
Map map1 = new HashMap();
map1.put(' ', 0);
......