两集合的并集 差集

问题描述

StringA={A,B,C,D,E}StringB={C,D,F,G,I}求结果1.{A,B,E}2.{C,D}3.{F,G,I}

解决方案

解决方案二:
要用java实现
解决方案三:
importjava.util.ArrayList;importjava.util.List;publicclassJihe{publicstaticvoidmain(String[]args){StringA="A,B,C,D,E";StringB="C,D,F,G,I";//得到两个集合对应的数组String[]tempA=A.split(",");String[]tempB=B.split(",");List<String>list1=newArrayList<String>();//保存A与B差集List<String>list2=newArrayList<String>();//保存交集List<String>list3=newArrayList<String>();//保存B与A的差集for(inti=0;i<tempA.length;i++){if(!find(tempB,tempA[i]))list1.add(tempA[i]);elselist2.add(tempA[i]);}for(inti=0;i<tempB.length;i++){if(!find(tempA,tempB[i]))list3.add(tempB[i]);}System.out.println("A与B的差集:"+list1);System.out.println("A与B的交集:"+list2);System.out.println("B与A的差集:"+list3);}/***判断数组arr中是否包含字符串str,包含则返回true,否则返回false*@paramarr*@paramstr*@return*/privatestaticbooleanfind(String[]arr,Stringstr){booleanflag=false;for(inti=0;i<arr.length;i++){if(arr[i].equals(str)){flag=true;break;}}returnflag;}}

解决方案四:
引用2楼hudie1234567的回复:

Javacodeimportjava.util.ArrayList;importjava.util.List;publicclassJihe{publicstaticvoidmain(String[]args){StringA="A,B,C,D,E";StringB="C,D,F,G,I";……

真快
解决方案五:
引用3楼yewuqing007的回复:

引用2楼hudie1234567的回复:Javacodeimportjava.util.ArrayList;importjava.util.List;publicclassJihe{publicstaticvoidmain(String[]args){StringA="A,B,C,D,E";StringB="C,D,……

呵呵,一般般啦!
解决方案六:
LZ。。。。。你这是求交集吧,不是并集
解决方案七:
根据楼主的要求做的,标题上楼主可能写错了!
解决方案八:
String[]A=newString[]{"A","B","C","D","E"};String[]B=newString[]{"C","D","F","G","I"};List<String>aList=newArrayList<String>(Arrays.asList(A));List<String>bList=newArrayList<String>(Arrays.asList(B));List<String>cList=newArrayList<String>(aList);cList.retainAll(bList);aList.removeAll(cList);bList.removeAll(cList);System.out.println(aList);System.out.println(bList);System.out.println(cList);

提供一个短版的
解决方案九:
引用2楼hudie1234567的回复:

Javacodeimportjava.util.ArrayList;importjava.util.List;publicclassJihe{publicstaticvoidmain(String[]args){StringA="A,B,C,D,E";StringB="C,D,F,G,I";……

借用一下你的代码,可以通过结合的交并差方法Collection.addAll并Collection.removeAll差Collection.retainAll交Arrays.asList得到一个集合importjava.util.*;publicclassJihe{publicstaticvoidmain(String[]args){StringA="A,B,C,D,E";StringB="C,D,F,G,I";//得到两个集合对应的数组String[]tempA=A.split(",");String[]tempB=B.split(",");List<String>list1=Arrays.asList(tmpeA).removeAll(Arrays.asList(tmppB));//差List<String>list2=Arrays.asList(tmpeA).retainAll(Arrays.asList(tmppB));//交List<String>list3=Arrays.asList(tmppB).retainAll(list2);//差System.out.println("A与B的差集:"+list1);System.out.println("A与B的交集:"+list2);System.out.println("B与A的差集:"+list3);}}

解决方案十:
++++引用8楼qybao的回复:

引用2楼hudie1234567的回复:Javacodeimportjava.util.ArrayList;importjava.util.List;publicclassJihe{publicstaticvoidmain(String[]args){StringA="A,B,C,D,E";StringB="C,D,F……

解决方案十一:
该回复于2010-12-15 13:52:27被版主删除
解决方案十二:
既然是集合,当然用集合来解呀。集合是无序的,结果与楼主期待的相同,但是顺序不同。如果想要顺序可以用java的可排序集合//测试用代码publicvoidtestSetHandler(){/*StringA={A,B,C,D,E}StringB={C,D,F,G,I}求结果1.{A,B,E}2.{C,D}3.{F,G,I}*/String[]arrA=newString[]{"A","B","C","D","E"};String[]arrB=newString[]{"C","D","F","G","I"};Set<String>setA=newHashSet<String>();Set<String>setB=newHashSet<String>();setA.addAll(Arrays.asList(arrA));setB.addAll(Arrays.asList(arrB));//结果1A-BSet<String>setA_B=geDifferenceSet(setA,setB);outPrintResult("结果1A-B",setA_B);//结果2AnBSet<String>setBnA=getSameSet(setA,setB);outPrintResult("结果2AnB",setBnA);//结果3B-ASet<String>setB_A=geDifferenceSet(setB,setA);outPrintResult("结果3B-A",setB_A);}privatevoidoutPrintResult(Stringdescription,Set<String>set){System.out.println(description+":");Iterator<String>ite=set.iterator();while(ite.hasNext()){StringcurrentStr=ite.next();System.out.println(""+currentStr);}}//合集求出publicSet<String>getUnionSet(Set<String>...sets){Set<String>unionSet=newHashSet<String>();for(Set<String>set:sets){unionSet.addAll(set);}returnunionSet;}//交集求出=合集-差集publicSet<String>getSameSet(Set<String>...sets){Set<String>sameSet=newHashSet<String>();Set<String>unionSet=getUnionSet(sets);sameSet=unionSet;for(Set<String>set:sets){sameSet=geDifferenceSet(sameSet,geDifferenceSet(unionSet,set));}returnsameSet;}//差集求出publicSet<String>geDifferenceSet(Set<String>setSrc,Set<String>...sets){Set<String>unionSet=newHashSet<String>();unionSet.addAll(setSrc);for(Set<String>set:sets){unionSet.removeAll(set);}returnunionSet;}

解决方案十三:
引用8楼qybao的回复:

引用2楼hudie1234567的回复:Javacodeimportjava.util.ArrayList;importjava.util.List;publicclassJihe{publicstaticvoidmain(String[]args){StringA="A,B,C,D,E";StringB="C,D,F……

retainAll受教了。谢谢~
解决方案十四:
上面说的不错,你可以看看........

时间: 2025-01-02 17:21:18

两集合的并集 差集的相关文章

输入集合A、B和全集C,求两集合的交集、并集、补集、差集

//输入集合A.B和全集C,求两集合的交集.并集.补集.差集 /* 并集:以属于A或属于B的元素为元素的集合成为A与B的并(集) 交集: 以属于A且属于B的元素为元素的集合成为A与B的交(集) 差:以属于A而不属于B的元素为元素的集合成为A与B的差(集) 补集:A的补集C-B */ /* 例如:A={1,2,3} B={2,3,4} C={1,2,3,4,5} AB并集为={1,2,3,4} 交集为={2,3} A补集={4,5} AB差集为={1} */ #include <iostream>

【Sets】使用Google Guava工程中Sets工具包,实现集合的并集/交集/补集/差集

获取两个txt文档的内容~存储进集合中求集合的并集/交集/补集/差集 1 package com.sxd.readLines.aboutDB; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileReader; 7 import java.io.FileWriter; 8 import java.io.IOException;

c++-编写程序,求两个整数集合的并集。。。

问题描述 编写程序,求两个整数集合的并集... 编写程序,求两个整数集合的并集...能不能把下面这个修改一下??如果可以,再写一个完整的程序也可以 解决方案 这是按照你的思路写的(假设a b两个数组内没有重复的数字) #include <iostream> #include <stdlib.h> using namespace std; void arrunion(int a[], int b[], int r[], int an, int bn, int * n) { *n =

Python求两个list的差集 交集 并集的实例

一.两个list差集 如有下面两个数组: a = [1,2,3] b = [2,3] 想要的结果是[1] 下面记录一下三种实现方式: 1. 正常的方式  代码如下 复制代码 ret = [] for i in a:     if i not in b:         ret.append(i) 2. 浓缩版  代码如下 复制代码 ret = [ i for i in a if i not in b ] 3. 另一版  代码如下 复制代码 ret = list(set(a) ^ set(b))

Python求两个list的差集

  一.两个list差集 如有下面两个数组: a = [1,2,3] b = [2,3] 想要的结果是[1] 下面记录一下三种实现方式: 1. 正常的方式  代码如下   ret = [] for i in a:     if i not in b:         ret.append(i) 2. 浓缩版  代码如下   ret = [ i for i in a if i not in b ] 3. 另一版  代码如下   ret = list(set(a) ^ set(b)) www.111

数据结构实践——顺序表:两集合的交集

[项目 - 求集合并集] 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员.设计算法,用函数unionList(List LA, List LB, List &LC )函数实现该算法,求一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中. 提示: (1)除了实现unnionList函数外,还需要在main函数中设计代码,调用unionList进行测试和演示: (2)可以充分利用前面建好的算法库[点击-],在程序头部直接加 #incl

数据结构实践——“求两集合交集”的一个错解分析

本文点评一位学生对基于线性表存储集合,然后对集合进行求并运算的错解,供学习者参考. [项目 - 求集合并集] 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员.设计算法,用函数unionList(List LA, List LB, List &LC )函数实现该算法,求一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中. 提示: (1)除了实现unnionList函数外,还需要在main函数中设计代码,调用unionList进行测试

Python 两个列表的差集、并集和交集实现代码_python

①差集 方法一: if __name__ == '__main__': a_list = [{'a' : 1}, {'b' : 2}, {'c' : 3}, {'d' : 4}, {'e' : 5}] b_list = [{'a' : 1}, {'b' : 2}] ret_list = [] for item in a_list: if item not in b_list: ret_list.append(item) for item in b_list: if item not in a_l

vba-用VBA如何快速地求两个区域的差集

问题描述 用VBA如何快速地求两个区域的差集 比如区域R1为A1:F100,区域R2为C30:E58,如何快速地求出R1中去掉R2后的区域R3? 解决方案 Kettle中求两个记录集的差集