Java中的泛型集
Set 接口存在于Java.util 包中。它基本上是一组没有重复对象的对象,这意味着 Set e1和e2中不能有两个对象,使得e1.equals(e2)和最多一个 null element 。它是一个对数学集建模的接口。这个接口继承了Collection接口的功能,并放置了一个功能,限制添加重复元素。实现 Set 接口的两个接口是 SortedSet 和 NavigableSet。
在此图中, NavigableSet 继承/扩展了 SortedSet。现在,由于 Set 没有保留元素插入的原始顺序,所以 NavigableSet 提供了这个接口的实现来导航 set。 TreeSet 是红黑树的实现,并实现了 NavigableSet。
集合接口的声明
public interface Set extends Collection{
}
集合的语法
Set< Integer > set = new HashSet< Integer >();
现在,这仅针对 Integer 数据类型。即只有 Integer 实例可以放入 Set 中。如果我们尝试在 Set 中放入其他东西,编译器会报错。泛型类型的检查发生在编译时。
通用集的语法
Set< T > set = new HashSet< T >();
上面的语法是使用T来显示 Set 的通用行为的一种通用方式,这意味着T可以替换为任何非原始类型,如 Integer、String、Double、 字符或任何用户定义的类型。
将元素添加到泛型集
添加() 方法用于在 Set 中添加元素。如果该元素已存在于 Set 中,则返回 false
Set set = new HashSet();
Character ch = 'a';
set.add(ch);
不同之处在于,如果我们尝试添加一些不是字符的内容,那么编译器将显示错误。
迭代泛型集
1.我们可以使用迭代器来迭代一个 Set。
Set set = new HashSet();
Iterator it = set.iterator();
while(it.hasNext()){
Integer aInt = iterator.next();
}
2.迭代 Set 的另一种方法是使用通用 for 循环。
Set set = new HashSet;
for(String st : set) {
System.out.println(st);
}
例子:
Java
// Java program to demonstrate Generic Set
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class GenericSet {
public static void main(String[] args)
{
// create an instance of Set using
// generics
Set set1 = new HashSet();
// Add elements
set1.add(100);
set1.add(Integer.valueOf(101));
// Create another set
Set set2 = new HashSet();
// Add elements
set2.add("geeksforgeeks");
set2.add("generics");
// Iterate set1 using for-each loop
for (Integer data : set1) {
System.out.printf("Integer Value :%d\n", data);
}
// Iterate set2 using iterator
Iterator stringIt = set2.iterator();
while (stringIt.hasNext()) {
System.out.printf("String Value :%s\n",
stringIt.next());
}
}
}
Integer Value :100
Integer Value :101
String Value :geeksforgeeks
String Value :generics