Java如何创建泛型Set集合?

在Java Generics的另一篇文章中,您已经List了解了如何使用此示例创建泛型集合,您将学习如何制作泛型Set。进行 Set泛型意味着我们希望它仅容纳已定义类型的对象。我们可以Set像下面的代码一样声明和实例化一个泛型。

Set<String> colors = new HashSet<>();

我们使用尖括号定义类型。我们还需要在实例化部分中定义类型,但是使用菱形运算符删除重复项,Java会自行推断出该类型。此声明和实例化将为您提供一个Set持有对String对象的引用的对象。如果试图让它保存其他类型的对象,例如Date或Integer,则会出现编译时错误。

Set<String> colors = new HashSet<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");

//colors.add(new Date()); // 编译时错误!

用于将项目添加到集合中的代码与我们以前的编码方式相同。但是,再次免费提供一件事是,编译器将检查是否将正确的类型添加到Set。如果我们从上面的代码段中删除最后一行的注释,则会出现编译时错误。因为我们正尝试将存储Date到一个Set类型的String。

现在,让我们看看如何迭代Set的内容。首先,我们将使用Iterator。这是代码片段。

Iterator iterator = colors.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

当使用泛型 Set 时,它将知道 iterator.next ()将返回 String 类型,这样您就不必使用强制转换运算符。这当然会使你的代码看起来更清晰,更易读。我们还可以在迭代 Set 时使用 for-each 循环,如下面的示例所示。

for (String color : colors) {
    System.out.println(color);
}