日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用java编程实现集合的交、并、差和补运算

發布時間:2023/12/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用java编程实现集合的交、并、差和补运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

一、實驗目的

掌握集合的交、并、差和補運算,并且使用計算機編程實現。

二、實驗內容

通過編程實現求給定集合A和B的并集C(C=A∪B)、交集C(C=A∩B)、差集C(C=A-B)、補集~C=E-C的運算。

三、實驗要求

C、C++或Jave語言編程實現

四、實驗原理

1、根據交集的定義:C={x | x∈A∧x∈B},我們將集合A的各個元素與集合B的元素進行比較,若在集合B中存在某個元素和集合A中一元素相等,則將該元素送入交集C之中。

2、并集的定義為:C={x|x∈A∨x∈B},所以,只要將集合A與B合在一起就得到了并集C。但是,在一個集合中,同樣的元素沒必要出現兩次或兩次以上,所以,在將集合A送入并集C后,應將集合B中與A中相同的元素刪除,再將集合B送入并集C之中。

3、差集C的定義:差集C={x|x∈A∧xB},即對于集合A中的元素ai,若不存在bj∈B(j=1,2,…..,m),使得ai=bj,則ai ∈差集C。

4、補集C的定義:~C=E-C={ x|x∈E∧xC }

五、實驗過程

源代碼

package cn.sal.lisan;

import java.util.HashSet;

import java.util.Set;

import java.util.Scanner;

public class Bingjiao {

????public static void main(String[] args) {

????????Set<Integer> result = new HashSet<Integer>();

????????Set<Integer> A = new HashSet<Integer>(); ????????

????????Set<Integer> B = new HashSet<Integer>();

????????Set<Integer> E=new HashSet<Integer>();

????????//以上是為了為四個集合開辟內存空間,方便后續賦值

????????

????????

????????System.out.println("請先輸入A,B,E每個集合的元素個數,然后依次輸入集合中的元素");

????????Scanner scanner=new Scanner(System.in);//獲取控制臺輸入

????????int x=scanner.nextInt();//獲取A集合的元素個數

????????int y=scanner.nextInt();//獲取B集合元素個數

????????int z=scanner.nextInt();//獲取E集合元素個數

??????// ?int[] a=new int[x];

????????for(int i=0;i<x;i++)

????????{

???????? int i1=scanner.nextInt();

???????? A.add(i1);

????????}

????????//為A集合賦值

????????for(int j=0;j<y;j++)

????????{

???????? int j1=scanner.nextInt();

???????? B.add(j1);

????????}

????????//為B集合賦值

????????for(int k=0;k<z;k++)

????????{

???????? int k1=scanner.nextInt();

???????? E.add(k1);

????????}

????????System.out.println("E ="+E.toString());

????????System.out.println("A = "+A.toString());

????????System.out.println("B = "+B.toString());

?????????

????????result.clear();//清除result中的元素

????????result.addAll(A);//將A集合中的元素放入result中

????????result.retainAll(B);//去除A中的所有不在B中的元素

????????System.out.println("交集 = " + result);

?????????

????????result.clear();

????????result.addAll(A);

????????result.removeAll(B);//清除A中所有屬于B的元素

????????System.out.println("差集 = "+result);

?????????

????????result.clear();

????????result.addAll(A);

????????result.addAll(B);//把A,B中的元素都加入進去,而且set中不會有重復的元素

????????System.out.println("并集 = " + result);

????????

????????

????????result.clear();

????????result.addAll(E);

????????result.removeAll(A);//跟差集一樣

????????System.out.println("補集 ="+result);

????}

}

實驗結果

請先輸入A,B,E每個集合的元素個數,然后依次輸入集合中的元素

2 4 5

1 2

1 3 4 5

1 2 3 4 5

E =[1, 2, 3, 4, 5]

A = [1, 2]

B = [1, 3, 4, 5]

AB交集 = [1]

AB差集 = [2]

AB并集 = [1, 2, 3, 4, 5]

AB補集 =[3, 4, 5]

?

?

  • 實驗總結

總結:因為這次離散實驗可以用java寫,而java中HashSet類恰好有add() ?remove()等方法直接用來計算集合的并集,交集,差集,所以本次實驗就使用java語言來完成了,這次實驗利用了set類的特性,即不會出現相同的元素,和集合定義相符合,該題的思路是,利用scanner類獲取用戶的輸入值,然后利用set類的add方法,將用戶輸入的集合元素全部放入相應的集合中,此后,具體到求交集并集差集時,先引入第三個變量result作存儲(引入第三方是為了不改變已定義好的集合的值),在計算交集時,先用addall方法把A集合全部放入result中,然后result調用retainAll(B)方法,保留result中存在B中的元素,同樣,計算并集時,用addAll方法,把A和B集合都放在result中,利用set不允許集合出現重復元素特性,可得到A和B的并集,在求差集時,調用removeAll方法,可除去A中存在B中的元素,在求補集時,也是利用差集思想,去除E中存在A中的元素。

?

轉載于:https://www.cnblogs.com/chmusk/p/11078936.html

總結

以上是生活随笔為你收集整理的用java编程实现集合的交、并、差和补运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。