Java的Set 接口是Collection 类的两个子接口之一,另一个是List 接口。
Set 接口描述了Set 抽象数据类型在Java中的实现方式。
一个Set 类型是一个可以存储唯一值的数据类型,而不保存值的添加顺序。
一个Set 不能包含重复的值。当你需要存储重复的值时,你需要使用一个List 。
在Java中,有几个实现Set 接口的类:
AbstractSetConcurrentSkipListSetCopyOnWriteArraySetEnumSetHashSetJobStateReasonsLinkedHashSetTreeSet
但在这些实现类中,只有少数几个是用来在Java中创建Set 它们是:
EnumSetHashSetLinkedHashSetTreeSet
这四个类使你可以创建一个具有不同专业性的Set 实例。
例如,EnumSet 是Set 接口的专门实现,用于存储 Javaenum 的值。
另一方面,HashSet 类在内部使用一个HashMap 实例来存储你的值。
所有实现Set 接口的类都有方法来帮助你操作类型中包含的数据。
例如,有add() 和remove() 方法来帮助你从该类型中添加和删除值。
下面是一个创建HashSet 变量的例子:
Set<String> mySet = new HashSet<>();
mySet.add("Nathan");
mySet.add("Jack");
System.out.println("mySet values: " + mySet);
mySet.remove("Jack");
System.out.println("mySet values after remove: " + mySet);
从上面的代码可以看出,你可以为Set 类型的变量创建一个新的HashSet 的实例。
这是因为Set 是在所有用于创建Set数据类型的Java类上实现的。
上面的代码将产生以下输出:
mySet values: [Nathan, Jack]
mySet values after remove: [Nathan]
Set 接口中定义的方法列表如下:
add()- 将一个作为参数传递的元素添加到集合中addAll()- 将一个集合的所有元素添加到集合中。你需要传递一个 作为它的参数Collectioniterator()- 返回一个迭代器,可以用来访问集合中的元素remove()- 从集合中删除你作为参数传递的元素removeAll()- 从参数中的集合中删除所有元素。接受一个 作为其参数CollectionretainAll()- 保留该集合中也存在于参数中的所有元素。接受一个 类型Collectionclear()- 从集合中删除所有元素size()- 返回集合中存在的元素的数量toArray()- 返回一个包含存储在集合中的所有元素的数组。contains()- 如果该集合包含指定的元素,则返回truecontainsAll()- 如果该集合包含指定参数的所有元素,则返回 。接受一个 类型trueCollectionhashCode()- 返回一个哈希代码值(集合中元素的地址)
现在你已经了解了Set 接口在Java中的工作原理。
请记住,你需要使用一个实现Set 接口的类来创建一个。