判断集合成员
时间限制:2.000S 空间限制:128MB
题目描述
请你编写一个程序,判断给定的整数 n 是否存在于给定的集合中。
输入描述
有多组测试数据,第一行有一个整数 k,代表有 k 组测试数据。
每组数据第一行首先是一个正整数 m,表示集合中元素的数量(1 <= m <= 1000)。
接下来一行包含 m 个整数,表示集合中的元素。
最后一行包含一个整数 n,表示需要进行判断的目标整数。
输出描述
包含多组输出,每组输出占一行。
如果集合中存在 m,输出“YES”,否则输出“NO”。
输入示例
2
5
1 2 3 4 5
3
6
1 2 3 4 5 6
7
输出示例
YES
NO
哈希表常使用的数据结构有数组、set集合
、map映射
, 上节课我们学习了数组作为哈希表,这节课我们来学习set
集合, 具体包括下列内容
set
的概念和特点set
的基本操作,比如创建、插入、删除、查找HashSet
的常用方法Set
集合的遍历- 迭代器
Set
在 Java 中,
Set
是一种集合接口,和数学中的集合类似,它用于存储一组不重复的元素,并且不保证元素的顺序。查找通常是Set
最重要的操作,它最常见的用法是判断某个对象是否在Set
中和去除集合中的重复元素。
Set
接口的常见实现类包括 HashSet
、TreeSet
和 LinkedHashSet
,我们通常会选择HashSet
作为实现。
HashSet的使用
使用集合前,需要用import
语句导入 Set
接口以及它的实现类HashSet
import java.util.Set; // 导入Set
import java.util.HashSet; // 导入HashSet
set
结构还提供了一些常见方法方便使用:
add(element)
:向集合中添加元素,如果元素已存在,则不会重复添加。remove(element)
:从集合中移除指定元素。contains(element)
:检查集合中是否包含指定元素。isEmpty()
:判断集合是否为空。size()
:返回集合中的元素数量。clear()
:清空集合中的所有元素。
// 创建一个HashSet实例
Set<String> set = new HashSet<>();
// 向集合中插入元素
set.add("zs");
set.add("ls");
set.add("Mike");
// 检查集合中是否包含特定元素
boolean containMike = set.contains("mike"); // 返回true
// 从集合中删除元素
set.remove("zs");
// 检查集合是否为空
boolean isEmpty = set.isEmpty();
JAVA代码实现:
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
// 外层循环,根据输入的k值确定循环次数
for (int i = 0; i < k; i++) {
int m = sc.nextInt();
Set<Integer> set = new HashSet<>();
// 内层循环,根据输入的m值确定循环次数,将输入的元素添加到set集合中
for (int j = 0; j < m; j++) {
set.add(sc.nextInt());
}
// 遍历set集合,输出每个元素
for (Integer element : set) {
System.out.println(element);
}
int n = sc.nextInt();
// 判断set集合中是否包含输入的n值
if (set.contains(n)) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
}