如何通过构造初始化哈希集值?

我需要创建一个具有初始值的。Set

Set<String> h = new HashSet<String>();
h.add("a");
h.add("b");

有没有办法在一行代码中做到这一点?例如,它对于最终的静态字段很有用。


答案 1

我使用的速记不是很省时,但适合一行:

Set<String> h = new HashSet<>(Arrays.asList("a", "b"));

同样,这不会节省时间,因为您正在构造一个数组,转换为列表并使用该列表创建一个集合。

在初始化静态最终集时,我通常这样写:

public static final String[] SET_VALUES = new String[] { "a", "b" };
public static final Set<String> MY_SET = new HashSet<>(Arrays.asList(SET_VALUES));

稍微不那么丑陋,效率对于静态初始化无关紧要。


答案 2

收集文字被安排在Java 7上,但没有进入。所以还没有自动的。

你可以使用番石榴的套装

Sets.newHashSet("a", "b", "c")

或者,您可以使用以下语法,这将创建一个匿名类,但它很棘手:

Set<String> h = new HashSet<String>() {{
    add("a");
    add("b");
}};