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>();
这个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>(); for(String stringElement : stringCollection) { //do something with each stringElement }
请注意,如何将每个元素(stringElement
)的变量类型指定为String。这是可能的,因为Collection的通用类型设置为String。