Map[]states是啥意思?

问题相关代码,请勿粘贴截图
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); }}中为啥要加两个{{}}

  1. Map[]states={}的括号{}中是像数组一样存放的吗?
    是的

  2. new HashMap<>() {{ put(' ', 0); put('s', 1); put('d', 2); put('.', 4); }}中为啥要加两个{{}}
    第一个 new HashMap<>() {} 表示 HashMap 类匿名内部类,可以理解为 HashMap 的一个实现,里面的括号和静态代码块类似,只是在类实例化的时候会先执行,也就是说代码中的 put 主要用于实例化类 HashMap 的匿名类时添加键值对。

Map[]states={}声明map集合的同时给map赋值。

img

外层两个括号,是创建map对象的括号,里面的是向对象放map数据的括号

1、Map[] 这个的写法就跟 常见的int[] 是一样的,即定义了一个数组,里面放的是Map类型的。所以Map[]states={}的括号{} 也就是数组在进行静态初始化。
2、为啥要加两个{{}}
外层的 {} 是 定义了一个匿名内部类 (Anonymous Inner Class),
内层的 {} 是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行
相当于
Map map1 = new HashMap();
map1.put(' ', 0);
......

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632