Java如何使用双括号初始化集合对象?

双括号初始化{{ ... }}是Java中初始化集合对象的另一种方法。它提供了用于初始化集合对象的简单语法。

package org.nhooo.example.lang;

import java.util.ArrayList;
import java.util.List;

public class DoubleBraceInitialization {
    public static void main(String[] args) {
        // 创建颜色列表并添加三种颜色
        // 红色,绿色和蓝色。
        List<String> colors1 = new ArrayList<>();
        colors1.add("Red");
        colors1.add("Green");
        colors1.add("Blue");

        for (String color : colors1) {
            System.out.println("Color = " + color);
        }

        // 创建另一个颜色列表并添加三种颜色
        // 使用双括号初始化。
        List<String> colors2 = new ArrayList<String>() {{
            add("Red");
            add("Green");
            add("Blue");
        }};

        for (String color : colors2) {
            System.out.println("Color = " + color);
        }
    }
}

实际上发生的是:第一个大括号创建了一个匿名内部类,第二个大括号是一个初始化程序块。由于需要创建内部类,因此认为双括号初始化的速度较慢

由于存在性能问题,最好不要在生产代码中使用此技术,而在单元测试中使用它可以使测试看起来更简单。