Set集合专项实验

2.1 验证性实验

1、验证是否生成不重复的随机整数集合:生成 10 个 0~50 之间(包含 0 和 50)的随机整数,使用 Set 集合存储这些整数,利用 Set 集合的特性确保存储的整数不重复最终输出集合中的所有元素。

知识补充: Random rd= new Random(); //Random位于 java.util包中

int n = rd.nextInt(n); //0~n-1之间的整数

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import java.util.HashSet; import java.util.Random; import java.util.Set; public class RandomUniqueNumbers { public static void main(String[] args) { // 创建Set集合存储不重复的随机数 Set<Integer> numbers = new HashSet<>(); // 创建Random对象用于生成随机数 Random random = new Random(); // 生成10个不重复的随机数 while (numbers.size() < 10) { // 生成0~50之间(包含0和50)的随机整数 int num = random.nextInt(51); // nextInt(51)生成0-50的整数 numbers.add(num); // Set会自动处理重复值 } // 输出集合中的所有元素 System.out.println("生成的10个不重复随机数为:"); for (int number : numbers) { System.out.print(number + " "); } } } |

2、验证以下功能是否正确:键盘输入一个字符串,利用set集合去除其重复字符,打印输出最终不同的字符。

代码如下,请验证上述问题相关功能。

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class RemoveDuplicatesSimple { public static void main(String[] args) { // 创建Scanner对象用于接收键盘输入 Scanner scanner = new Scanner(System.in); // 提示用户输入字符串 System.out.print("请输入一个字符串:"); String input = scanner.nextLine(); // 创建HashSet集合存储字符,自动去重 Set<Character> charSet = new HashSet<>(); // 遍历字符串中的每个字符并添加到集合 for (int i = 0; i < input.length(); i++) { charSet.add(input.charAt(i)); } // 直接打印集合中的字符 System.out.print("去除重复字符后的结果:"); for (char c : charSet) { System.out.print(c); // 逐个打印集合中的字符 } // 关闭Scanner scanner.close(); } } |

2.2 自主设计性实验

3、利用Scanner输入6个1-100之间的整数,要求利用目前所学的集合按照添加顺序进行存储,同时自动排除输入的重复数据,根据要求完成以下功能:

(1) 打印输出集合中最大的数据

(2) 打印输出集合中所有数据的平均值

4、定义一个Employee类,属性:工号-empId、姓名-empName、性别-empSex、部门-department、工资-slalary,创建多个Employee对象,存储在Set集合中,要求员工信息不能重复(所有信息相同视为重复),根据要求完成以下功能:(部门可以为:人事部、研发部、财务部、咨询部)

(1) 打印输出 集合中所有的研发部员工

(2) 打印输出 集合中所有工资大于 5000元的女员工

(3) 统计集合中财务部员工的人数

(4) 统计集合中 人事部 员工的平均工资

5、创建一个商品(Product)类,属性:商品名,商品单价,商品的数量,商品产地。

  1. 创建多个商品对象,存储在Set集合中,集合中不能出现重复商品,商品名相同即为重复,在Product类中添加必要的方法;
  2. 显示所有的商品信息;
  3. 打印输出商品价格 > 1000 的所有商品信息;
  4. 打印售空的商品的信息;
  5. 打印输出商品产地为"北京"的商品信息;
  6. 输入一个商品名,查询出此类商品的信息,如果不存在,则打印商品"商场无此商品!"
  7. 输入一个价格段,查询出集合中所有在这个价格区间的所有商品信息。

6、设计一个图书收藏系统,要求:

定义Book类,包含属性(ISBN、书名、作者),ISBN 相同则为同一本书。

定义Library类,包含Set<Book>类型的成员变量,实现以下方法:

addBook(Book book):添加图书(自动去重)。

removeBook(String isbn):根据 ISBN 删除图书。

findBook(String isbn):根据 ISBN 查找图书并返回。

showAllBooks():打印所有图书信息(格式:ISBN: xxx, 书名: xxx, 作者: xxx)。

在main方法中测试:添加 5 本图书(含 2 本重复 ISBN),删除 1 本,查找 1 本,最后展示所有图书。

相关推荐
席万里1 小时前
关于Go的init函数执行顺序#黑魔法
开发语言·网络·golang
m0_564914921 小时前
EDGE浏览器如何在新标签页打开收藏?EDGE浏览器如何打开书签不覆盖原网页?如何默认在新建标签页打开收藏夹书签?
前端·edge
司铭鸿1 小时前
图论中的协同寻径:如何找到最小带权子图实现双源共达?
linux·前端·数据结构·数据库·算法·图论
嘟嘟w1 小时前
Spring 核心注解深度分析
java·后端·spring
橘子真甜~1 小时前
C/C++ Linux网络编程6 - poll解决客户端并发连接问题
服务器·c语言·开发语言·网络·c++·poll
风宇啸天2 小时前
令牌桶按用户维度限流
前端
vvoennvv2 小时前
【Python TensorFlow】 BiTCN-LSTM双向时间序列卷积长短期记忆神经网络时序预测算法(附代码)
python·神经网络·tensorflow·lstm·tcn
safestar20122 小时前
React 19 深度解析:从并发模式到数据获取的架构革命
前端·javascript·react.js
9***Y482 小时前
Java开发工具IntelliJ IDEA技巧
java·开发语言·intellij-idea