Java集合(Set)的用法(附带实例)
Java 中的 Set 集合是由一串无序的、不能重复的相同类型元素构成的集合。
图下所示是一个球队的 Set 集合,这个 Set 集合中又包含了若干球员,这些球员不能重复。

图 1 Set集合
List 集合中的元素是有序的、可重复的,而 Set 集合中的元素是无序的、不能重复的。List 集合强调的是有序,Set 集合强调的是不重复。当不考虑顺序且没有重复元素时,Set 集合和 List 集合是可以互相替换的。
Java 中描述 Set 集合的接口是 Set,它的直接实现类主要是 HashSet 和 TreeSet,其中 HashSet 是基于散列表数据结构的实现。
示例代码如下:
程序的运行结果如下:
示例代码如下:
Set 集合的特点如下:
常见的 Set 集合实现类如下:
通过下面的实例,我们回顾一下 Set 集合的常见用法,包括添加元素和遍历集合等操作:
图下所示是一个球队的 Set 集合,这个 Set 集合中又包含了若干球员,这些球员不能重复。

图 1 Set集合
List 集合中的元素是有序的、可重复的,而 Set 集合中的元素是无序的、不能重复的。List 集合强调的是有序,Set 集合强调的是不重复。当不考虑顺序且没有重复元素时,Set 集合和 List 集合是可以互相替换的。
Java 中描述 Set 集合的接口是 Set,它的直接实现类主要是 HashSet 和 TreeSet,其中 HashSet 是基于散列表数据结构的实现。
Java Set接口的常用方法
Set 接口也继承自 Collection 接口,Set 接口中大部分都继承自 Collection 接口,这些方法如下。1) 操作元素
- add(Object element):在 Set 集合的尾部添加指定的元素。该方法是从 Collection 接口继承过来的;
- remove(Object element):如果 Set 集合中存在指定元素,则从 Set 集合中移除该元素。该方法是从 Collection 集合继承过来的;
- clear():从 Set 集合中移除所有元素。该方法是从 Collection 集合继承过来的。
2) 判断元素
- isEmpty():判断 Set 集合中是否有元素,如果没有,返回 true,如果有,返回 false。该方法是从 Collection 接口继承过来的;
- contains(Object element):判断 Set 集合中是否包含指定元素,如果包含,返回 true,如果不包含,返回 false。该方法是从 Collection 接口继承过来的。
3) 其他
- size():返回 Set 集合中的元素数,返回值是 int 类型的。该方法是从 Collection 接口继承过来的;
- forEach():遍历集合。
示例代码如下:
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String args[]) {
Set<Integer> players = new HashSet<>(); // 声明 Set 用于存储球员编号
// 向集合中添加球员编号
players.add(10);
players.add(11);
players.add(12);
players.add(13);
players.add(13); // ①
// 打印球员编号
System.out.println("--球员编号--");
for (Integer player : players) {
System.out.println("球员编号:" + player);
}
}
}
上述代码创建了 Set 集合对象,然后试图添加元素到 Set 集合中,需要注意的是,当代码第 ① 处试图插入重复元素时,是不能插入的,因此虽然多次添加数据,但是只保留一个。程序的运行结果如下:
--球员编号--
球员编号:10
球员编号:11
球员编号:12
球员编号:13
Java遍历Set集合
遍历 Set 集合有如下两种方法:- 使用 Java 风格 for 循环(增强 for 循环)遍历。增强 for 循环是针对遍历各种类型的集合而推出的,推荐使用这种遍历方法;
- 使用 forEach() 方法遍历。
示例代码如下:
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
// 创建一个 set 集合并添加球员编号
Set<Integer> players = new HashSet<>();
players.add(10);
players.add(11);
players.add(12);
players.add(13);
// 使用增强 for 循环遍历 Set 集合
System.out.println("--使用 Java 风格的增强 for 循环遍历--");
for (Integer player : players) {
System.out.println("球员编号:" + player);
}
// 使用 forEach() 方法遍历 Set 集合
System.out.println("--使用 forEach() 方法遍历--");
players.forEach(player -> {
System.out.println("球员编号:" + player);
});
}
}
程序的运行结果如下:
--使用 Java 风格的增强 for 循环遍历--
球员编号:10
球员编号:11
球员编号:12
球员编号:13
--使用 forEach() 方法遍历--
球员编号:10
球员编号:11
球员编号:12
球员编号:13
总结
Set 集合是 Java 集合框架中的一种实现,它不允许包含重复的元素,每个元素在 Set 集合中都是唯一的。Set 集合的特点如下:
- 不允许重复元素:Set 集合中不会包含相同的元素,保证了每个元素的唯一性;
- 无序:Set 集合不保证元素的顺序,元素存储的顺序可能与添加的顺序不同;
- 高效查找:Set 集合内部使用了哈希表等数据结构,使得查找元素的速度非常快。
常见的 Set 集合实现类如下:
- HashSet:基于哈希表实现,是最常用的 Set 集合;
- TreeSet:基于 TreeMap 实现,可以对元素进行排序;
- LinkedHashSet:基于哈希表和链表实现,保留元素的插入顺序。
通过下面的实例,我们回顾一下 Set 集合的常见用法,包括添加元素和遍历集合等操作:
import java.util.HashSet;
class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String s) {
this.name = s;
}
}
public class Main {
public static void main(String[] args) {
HashSet<Student> studentSet = new HashSet<>();
studentSet.add(new Student(101, "John"));
studentSet.add(new Student(103, "Amy"));
studentSet.add(new Student(102, "Mike"));
for (Student student : studentSet) {
System.out.println("学生 ID:" + student.getId() + ", 姓名:" + student.getName());
}
}
}
程序的运行结果如下:
学生 ID:101, 姓名:John
学生 ID:103, 姓名:Amy
学生 ID:102, 姓名:Mike
ICP备案:
公安联网备案: