JAVA高手帮帮忙!!!JAVA的集合问题!!!
答案:2 悬赏:20 手机版
解决时间 2021-05-08 23:21
- 提问者网友:嗝是迷路的屁
- 2021-05-08 18:37
有两个集合,A集合内容为:{1、2、3、4},B集合内容为:{1、2、5、6},两个集合的对称差定义为A Δ B = (A − B) ∪(B − A),上述A、B两集合的对称差为{3、4、5、6}。编写一个程序,用散列集求两个集合A、B的对称差集合,即求(A − B) ∪(B − A) 。
最佳答案
- 五星知识达人网友:逐風
- 2021-05-08 20:10
List res = new List();//成员变量,也就是最后要得的//(A-B)U(B-A)
//求(A − B) ∪(B − A)
private void qiujie(){
List list1 = new List();//添第一个集合
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
List list1 = new List();// 添第二个集合
list1.add(1);
list1.add(2);
list1.add(5);
list1.add(6);
getList(list1,list2);//A-B
getList(list2,list1);//B-A
}
//A-B或B-A
private void getList(List temp1,List temp2){
for(int i=0;i<temp1.size();i++){
if(!temp2.contains(temp1.get(i))){
res.add(temp1.get(i));
}
}
}
哈哈 感觉应该没问题,你可以测试下啊,我没试过,
全部回答
- 1楼网友:人類模型
- 2021-05-08 20:52
A :2 4 1 3
B :2 6 1 5
A-B:4 3
B-A:6 5
AΔB:4 6 3 5
import java.util.*;
public class test {
public static void main(String[] args) {
HashSet a = new HashSet();
a.add(1);a.add(2);a.add(3);a.add(4);
HashSet b = new HashSet();
b.add(1);b.add(2);b.add(5);b.add(6);
show("A :", a); show("B :", b);
HashSet A = diff(a, b);
HashSet B = diff(b, a);
HashSet S = union(A, B);
show("A-B:", A);
show("B-A:", B);
show("AΔB:", S);
}
static void show(String msg, HashSet h)
{
System.out.print(msg);
Iterator i = h.iterator();
while(i.hasNext())
System.out.print(i.next() + " ");
System.out.println();
}
static HashSet diff(HashSet a, HashSet b)
{
HashSet c = new HashSet();
Iterator i = a.iterator();
while(i.hasNext()) {
Object x = i.next();
if(!b.contains(x))
c.add(x);
}
return c;
}
static HashSet union(HashSet a, HashSet b)
{
HashSet c = new HashSet();
Iterator i = a.iterator();
while(i.hasNext()) {
Object x = i.next();
if(!c.contains(x))
c.add(x);
}
i = b.iterator();
while(i.hasNext()) {
Object x = i.next();
if(!c.contains(x))
c.add(x);
}
return c;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯