package com.miaoqiang.collectiontest; import java.util.*; /** * 求set集合的交集、并集和差集
* @Author: 苗晓强 * @Date: 2021/11/29 17:31 */ public class SetTest { public
static void main(String[] args) { Scanner scanner = new Scanner(System.in);
System.out.println("请输入A集合大小,系统会自动生成相对应数量的元素的集合:"); int i = scanner.nextInt();
Set<Integer> setA = new HashSet<Integer>(); for (int j = 0; j < i; j++) {
setA.add(getRandomNumbers()); } System.out.println("迭代器展示集合A的内容:");
Iterator<Integer> iterator = setA.iterator(); while (iterator.hasNext()){
System.out.print(iterator.next() + " "); } System.out.println();
System.out.println("for循环展示集合A的内容:"); for (Integer number: setA) {
System.out.print(number + " "); } System.out.println();
System.out.println("请输入B集合大小,系统会自动生成相对应数量的元素的集合:"); int m = scanner.nextInt();
Set<Integer> setB = new HashSet<Integer>(); for (int j = 0; j < m; j++) {
setB.add(getRandomNumbers()); } System.out.println(setB.size());
System.out.println("迭代器展示集合B的内容:"); Iterator<Integer> iterator1 =
setB.iterator(); while (iterator1.hasNext()){ System.out.print(iterator1.next()
+ " "); } System.out.println(); Set<Integer> result = new HashSet<Integer>();
//添加集合A的数据到result中 result.addAll(setA); //求集合A和集合B的交集 //result.retainAll(setB);
//System.out.println("集合A和B的交集是:" + result); //求两个集合的并集
因为set无序不重复的特性,决定了,求并集,直接添加即可 //result.addAll(setB);
//System.out.println("集合A和B的并集是:" + result); result.addAll(setA);
result.removeAll(setB); System.out.println("集合A和集合B的差集:" + result); } /** *
随机获取 1~100的数字 * @return */ private static Integer getRandomNumbers() { Random
random = new Random(); return random.nextInt(100) + 1; } }
反思:主要利用了Set集合不重复的特性,涉及的主要方法有 
result.addAll(setA); result.retainAll(setB); result.removeAll(setB);

同时也使用了Scanner类从控制台读取数据,随机类Random随机生产数字,以及使用Iterator迭代器循环遍历Set集合,不足之处是,在对集合B进行设定集合容量的时候,偶发性会将集合的容量减一,即,明明在控制台输入的是6,但是,集合B的容量却是5,暂时还没有想明白。

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信