学习Java中的Set接口

111 阅读2分钟

Java的Set 接口是Collection 类的两个子接口之一,另一个是List 接口。

Set 接口描述了Set 抽象数据类型在Java中的实现方式。

一个Set 类型是一个可以存储唯一值的数据类型,而不保存值的添加顺序。

一个Set 不能包含重复的值。当你需要存储重复的值时,你需要使用一个List

在Java中,有几个实现Set 接口的类:

  • AbstractSet
  • ConcurrentSkipListSet
  • CopyOnWriteArraySet
  • EnumSet
  • HashSet
  • JobStateReasons
  • LinkedHashSet
  • TreeSet

但在这些实现类中,只有少数几个是用来在Java中创建Set 它们是:

  • EnumSet
  • HashSet
  • LinkedHashSet
  • TreeSet

这四个类使你可以创建一个具有不同专业性的Set 实例。

例如,EnumSetSet 接口的专门实现,用于存储 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() - 将一个集合的所有元素添加到集合中。你需要传递一个 作为它的参数Collection
  • iterator() - 返回一个迭代器,可以用来访问集合中的元素
  • remove() - 从集合中删除你作为参数传递的元素
  • removeAll() - 从参数中的集合中删除所有元素。接受一个 作为其参数Collection
  • retainAll() - 保留该集合中也存在于参数中的所有元素。接受一个 类型Collection
  • clear() - 从集合中删除所有元素
  • size() - 返回集合中存在的元素的数量
  • toArray() - 返回一个包含存储在集合中的所有元素的数组。
  • contains() - 如果该集合包含指定的元素,则返回true
  • containsAll() - 如果该集合包含指定参数的所有元素,则返回 。接受一个 类型true Collection
  • hashCode() - 返回一个哈希代码值(集合中元素的地址)

现在你已经了解了Set 接口在Java中的工作原理。

请记住,你需要使用一个实现Set 接口的类来创建一个。