Java通用集合

时间:2020-01-09 10:35:47  来源:igfitidea点击:

可以为Java Collections API中的大多数(如果不是全部)组件指定通用类型。在本教程中,我将解释如何为几个集合类型指定一个通用类型。看到这些示例将使我们对如何将泛型与Java Collections API结合使用有所了解。本文一般不会涵盖Java泛型。 Java Generics教程涵盖了Java Generics。

通用集合示例

为Java集合设置通用类型时,需要在声明引用它的变量时进行设置。这是将Collection和HashSet的通用类型设置为Java String的示例,这意味着它只能包含String实例:

Collection<String> stringCollection = new HashSet<String&gt();

这个stringCollection现在只能包含String实例。如果我们尝试添加其他任何内容,或者将集合中的元素强制转换为除String之外的任何其他类型,则编译器将抱怨。

实际上,如果我们作弊一点(或者只是愚蠢),可以插入除String对象之外的其他对象,但是不建议这样做。

我们可以为"列表","集合"等指定通用类型。

通用迭代器

当我们为Java集合指定了通用类型时,该通用类型也适用于iterator()方法返回的Iterator。这是一个如何获取设置了通用类型的Iterator的示例:

Iterator<String> iterator = stringCollection.iterator();

我们可以像这样迭代此Iterator的元素:

while(iterator.hasNext()) {
    String element = iterator.next();
    //do something with element.
}

注意,没有必要强制转换从iterator.next()方法调用返回的String。由于Iterator的通用类型设置为String,因此Java编译器已经知道next()将返回String。

使用for循环的通用迭代

我们还可以使用新的for循环迭代上述集合,如下所示:

Collection<String> stringCollection = new HashSet<String&gt();

for(String stringElement : stringCollection) {
  //do something with each stringElement    
}

请注意,如何将每个元素(stringElement)的变量类型指定为String。这是可能的,因为Collection的通用类型设置为String。