Java 中的 Set
是一种集合,它继承自 Collection
接口,它用于存储不重复的元素。Java 中提供了多个 Set
实现类,包括 HashSet
、LinkedHashSet
、TreeSet
等。下面是一个 HashSet
的示例:
import java.util.HashSet;
import java.util.Set;
public class SetExample {
public static void main(String[] args) {
// 创建一个 HashSet 对象
Set<String> set = new HashSet<String>();
// 添加元素
set.add("Java");
set.add("Python");
set.add("C++");
set.add("JavaScript");
set.add("Java");
// 输出元素个数
System.out.println("元素个数:" + set.size());
// 遍历元素
for (String str : set) {
System.out.println(str);
}
// 判断是否包含元素
System.out.println("是否包含 Python:" + set.contains("Python"));
// 删除元素
set.remove("C++");
// 清空集合
set.clear();
}
}
在上面的代码中,首先创建了一个 HashSet
对象,然后使用 add()
方法添加元素,由于 Set
是不重复的,所以重复的元素只会保留一个。使用 size()
方法可以获取元素的个数,使用 contains()
方法可以判断集合中是否包含指定的元素,使用 remove()
方法可以删除元素,使用 clear()
方法可以清空集合。最后使用 for-each 循环遍历集合中的元素。
输出结果如下:
元素个数:4
Java
Python
C++
JavaScript
是否包含 Python:true
需要注意的是,Set
接口中的元素是无序的,即元素的添加和删除顺序与元素在集合中的位置无关。如果需要有序的集合,可以使用 TreeSet
或 LinkedHashSet
。
Set
接口提供了许多常用的方法,如 add()
、contains()
、remove()
、clear()
、size()
、isEmpty()
、iterator()
等,具体可以参考 Java 官方文档。
除了 Collection
接口提供的方法外,Set
接口还提供了一些特有的方法,下面简单介绍一下:
add(E e)
:将指定的元素添加到集合中。如果元素已经存在,则不会重复添加,返回 false
。addAll(Collection<? extends E> c)
:将指定集合中的所有元素添加到当前集合中。remove(Object o)
:从集合中删除指定元素。removeIf(Predicate<? super E> filter)
:根据指定的条件删除集合中的元素。retainAll(Collection<?> c)
:仅保留当前集合与指定集合的交集,即删除不属于指定集合的元素。contains(Object o)
:判断集合是否包含指定元素。containsAll(Collection<?> c)
:判断当前集合是否包含指定集合中的所有元素。isEmpty()
:判断集合是否为空。size()
:获取集合中元素的个数。clear()
:清空集合中的所有元素。下面是一个 TreeSet
的示例,TreeSet
是基于红黑树实现的有序集合,它的元素按照自然顺序排序或者指定的排序方式进行排序:
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
// 创建一个 TreeSet 对象
TreeSet<Integer> set = new TreeSet<Integer>();
// 添加元素
set.add(5);
set.add(2);
set.add(8);
set.add(1);
// 输出元素个数
System.out.println("元素个数:" + set.size());
// 遍历元素
for (Integer num : set) {
System.out.println(num);
}
// 判断是否包含元素
System.out.println("是否包含 5:" + set.contains(5));
// 删除元素
set.remove(2);
// 清空集合
set.clear();
}
}
在上面的代码中,首先创建了一个 TreeSet
对象,然后使用 add()
方法添加元素,由于 TreeSet
是有序的,所以输出的结果是按照升序排列的。使用 contains()
方法可以判断集合中是否包含指定的元素,使用 remove()
方法可以删除元素,使用 clear()
方法可以清空集合。最后使用 for-each 循环遍历集合中的元素。
输出结果如下:
元素个数:4
1
2
5
8
是否包含 5:true
需要注意的是,如果要将自定义对象添加到集合中,需要重写对象的 hashCode()
和 equals()
方法,以保证集合能够正确的去重和比较对象。另外,Set
集合中的元素是无序的,如果需要按照某种顺序进行排序,可以使用 TreeSet
。