📜  Java中的泛型集

📅  最后修改于: 2022-05-13 01:54:48.636000             🧑  作者: Mango

Java中的泛型集

Set 接口存在于Java.util 包中。它基本上是一组没有重复对象的对象,这意味着 Set e1e2中不能有两个对象,使得e1.equals(e2)最多一个 null element 。它是一个对数学集建模的接口。这个接口继承Collection接口功能,并放置了一个功能,限制添加重复元素。实现 Set 接口的两个接口是 SortedSet 和 NavigableSet。

Java 中的泛型集

在此图中, 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