news 2026/7/22 15:56:35

卡码网Java基础课--哈希表基础(2)--判断集合成员例题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
卡码网Java基础课--哈希表基础(2)--判断集合成员例题

上篇文章中我们讲到, 哈希表常使用的数据结构有数组、set集合,map映射,学习了数组作为哈希表,本篇文章我们学习set集合。

set的概念个特点:

在 Java 中,set是一种集合接口,和数学中的集合类似,它用于存储一组不重复的元素,并且不保证元素的顺序。set接口的常见实现类包括HashsetTreeSetLinkedHashSet,通常选择HashSet作为实现。

set的基本操作:

创建、插入、删除、查找是set的基本操作,查找通常是Set最重要的操作,它最常见的用法是判断某个对象是否在Set中和去除集合中的重复元素。

HashSet的常用方法:

  • add(element):向集合中添加元素,如果元素已存在,则不会重复添加。
  • remove(element):从集合中移除指定元素。
  • contains(element):检查集合中是否包含指定元素。
  • isEmpty():判断集合是否为空。
  • size():返回集合中的元素数量。
  • clear():清空集合中的所有元素

set集合的遍历:
可以使用增强 for 循环(for-each 循环)来遍历一个Set集合。

// 遍历集合中的元素 for (String name : set) { System.out.println(name); }

也可以使用迭代器来遍历,要使用迭代器,需要先获得集合的迭代器对象,使用集合的iterator()方法来获取这个迭代器对象,然后可以使用hasNext()方法检查是否还有元素,并使用next()方法获取下一个元素。

public static void main(String[] args) { Set<String> stringSet = new HashSet<>(); stringSet.add("zs"); stringSet.add("ls"); stringSet.add("Mike"); Iterator<String> iterator = stringSet.iterator(); // 获取集合的迭代器 while (iterator.hasNext()) { // 检查是否还有元素可迭代 String element = iterator.next(); // 获取下一个元素 System.out.println(element); } }

例题:判断集合成员

题目描述:

请你编写一个程序,判断给定的整数 n 是否存在于给定的集合中。

输入描述:

有多组测试数据,第一行有一个整数 k,代表有 k 组测试数据。

每组数据第一行首先是一个正整数 m,表示集合中元素的数量(1 <= m <= 1000)。

接下来一行包含 m 个整数,表示集合中的元素。

最后一行包含一个整数 n,表示需要进行判断的目标整数。

输出描述:

包含多组输出,每组输出占一行。

如果集合中存在 n,输出“YES”,否则输出“NO”。

输入示例:

2 5 1 2 3 4 5 3 6 1 2 3 4 5 6 7

输出示例:

YES NO

以下是完整Java代码:

import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int k = scanner.nextInt(); for (int i = 0; i < k; i++) { int m = scanner.nextInt(); Set<Integer> set = new HashSet<>(); // 创建集合 for (int j = 0; j< m; j++) { set.add(scanner.nextInt()); // 集合的插入操作 } int n = scanner.nextInt(); if (set.contains(n)) { // 检查集合中是否包含特定元素 System.out.println("YES"); } else { System.out.println("NO"); } } scanner.close(); } }

附:以上内容均来自卡码网Java基础课,若有侵权,将在第一时间删除。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 15:56:28

JAVA的简单练习项目(龟兔赛跑)

题目要求&#xff1a; 龟兔赛跑&#xff1a; --普通格&#xff0c;共100格 _ _ 龟&#xff1a;每次随机移动1至3格 兔子&#xff1a;每次随机移动1至6格 每20格会随机出现以下功能格各一次(不会在同一格内出现两种或两种以上功能) 功能格&#xff1a;(**和^^可以连续执行…

作者头像 李华
网站建设 2026/7/22 15:54:44

计算机毕业设计之基于SpringBoot的摄影图片共享社区

信息技术是当今社会发展的重要方向之一&#xff0c;它已经深入到各个行业中。随着计算机技术的发展&#xff0c;信息技术已经从传统的数据处理转变为网络信息的处理和交互。在管理方面&#xff0c;通过信息管理技术&#xff0c;系统可以快速的处理大量的数据&#xff0c;并且能…

作者头像 李华
网站建设 2026/7/22 15:54:24

Kafka单集群部署与生产环境优化指南

1. Kafka单集群部署概述Kafka作为分布式消息队列系统的代表&#xff0c;其单集群部署是大多数中小型企业的首选方案。我在金融行业数据中台项目中累计部署过20套Kafka集群&#xff0c;单集群部署相比多集群方案具有配置简单、运维成本低的优势&#xff0c;特别适合日均消息量在…

作者头像 李华
网站建设 2026/7/22 15:53:09

从源码看 CopyOnWriteArrayList 的线程安全机制

目录 一.CpoyOnWriteArrayList 原理简单概述 二. CopyOnWriteArrayList 源码分析 2.1 属性构造器解读 2.2 get 方法分析 2.3 add 方法分析 2.4 set 方法分析 2.5 remove 方法分析 三. 总结概括 使用过 ArrayList 集合的同学应该大致都知道&#xff0c;ArrayList 是一个…

作者头像 李华
网站建设 2026/7/22 15:53:01

浅谈 MySQL 主从复制,优点?原理?

目录 一. 主从复制概述 二. 主从复制有什么优点&#xff1f; 三. 主从复制的原理 四. 数据一致性问题 4.1 同步复制 4.2 异步复制 4.3 半同步复制 一. 主从复制概述 既然是主从复制&#xff0c;那么至少就应该有两台服务器&#xff0c;一台作为主库(Master)&#xff0c…

作者头像 李华
网站建设 2026/7/22 15:51:48

虚拟线程如何用“同步代码”血洗百万并发?

虚拟线程如何用“同步代码”血洗百万并发&#xff1f; 文章目录虚拟线程如何用“同步代码”血洗百万并发&#xff1f;一、传统并发模型的痛点与瓶颈二、直击灵魂&#xff1a;虚拟线程到底是个啥&#xff1f;三、硬核对决&#xff1a;传统线程池 vs 虚拟线程传统线程池方式&…

作者头像 李华