在Java中, 集合类型的对象初始化, 一般是先创建对象, 然后往集合里面增加元素,这种写法直观,但是撰写代码的时候感觉比较冗余, 是否有什么酷炫的方式简化定义初始化呢?
本篇介绍字符串数组、List 和 Map类型对象的定义初始化简单方式。
字符串数组的简化初始化
常用的写法:
String[] strArray = new String[3] ;strArray[0] = "1";strArray[1] = "2";strArray[2] = "3";
简化的写法:
String[] strArray = new String[] {"1","2","3"};
这里使用一行代码, 替换了四行代码, 是不是简化多了?
列表的简化初始化
常用的写法先创建对象, 再往里面添加元素, 代码如下:
List<String> list = new ArrayList<String>();list.add("1");list.add("2");list.add("3");
简化的写法:
List<String> list = Arrays.asList("1","2","3");
通过Arrays的asList() 方法来建立列表类型对象的初始化。
Map类型的简化初始化 - 不建议使用
Map以键值对的方式存储数据, 定义一个HashMap类型的对象并初始化的代码如下:
Map<String,String> map = new HashMap<String,String>();map.put("key1", "1");map.put("key2", "2");map.put("key3", "3");
可以使用双括号初始化(Double Brace Initialization)来简便地初始化 HashMap,代码如下:
Map<String,String> map = new HashMap<String,String>(){{put("key1", "1");put("key2", "2");put("key3", "3");}};
上面的方式是通过创建一个匿名子类并在初始化代码块中调用 put 方法来达到简便地定义和初始化 HashMap 的目的。
但是请注意,这种方法在某些场景下可能会造成内存泄漏,因为匿名子类会保留对外部类的引用。而且上面代码的简化程度也不高,所以Map 的简化方式不推荐使用。
本篇示例代码
- https://github.com/osxm/java-ency/blob/master/src/main/java/com/osxm/je/chp1/CollectionInitial.java