HashMap优雅的初始化方式以及引申

小记

  相信很多人和笔者一样,经常会做一些数组的初始化工作,也肯定会经常用到集合类。假如我现在要初始化一个String类型的数组,可以很方便的使用如下代码:

  String [] strs = {"Tom","Jack"};

  但是我相信很多人在初始化HashMap的时候是使用如下的方式:

  Map<String, Object> map = new HashMap<String, Object>();
  map.put("name", "June");  
  map.put("age", 12);

  上面这段代码个人觉得略显啰嗦,其实还有另外一种优雅的初始化方式:

  Map<String, Object> map = new HashMap<String, Object>() {
      {
          put("name", "June");  
          put("age", 12);  
      }
  };

  这边有必要说清楚两个大括号表示的是啥意思,是一种什么语法呢?其实,外层的一组“{}”表示的是一个匿名类,内层的一对“{}”表示的是实例初始化块,然后这边还有一点需要明白,实例初始化块的代码在编译器编译过后,是放在类的构造函数里面的,并且是在原构造函数代码的前面。

posted @ 2018-09-24 09:27  十月围城小童鞋  阅读(272)  评论(0编辑  收藏  举报