java 数据结构题

设有线性表 LA=(3,5,8,11)和 LB=(2,6,8,9,11,15,20);
① 若LA和LB分别表示两个集合A和B,求新集合
A=A U B(‘并’操作,相同元素不保留);
预测输出:LA=(3,5,8,11,2,6,9,15,20)

①:用HashSet(无需不重复)类的addAll方法来实现,

package com.golden.util;

import java.util.Collection;
import java.util.HashSet;

public class Test {
      public static void main(String[] args) {
        Collection<Integer> a = new HashSet<Integer>();
        a.add(3);
        a.add(5);
        a.add(8);
        a.add(11);
        Collection<Integer> b = new HashSet<Integer>();
        b.add(2);
        b.add(6);
        b.add(8);
        b.add(9);
        b.add(11);
        b.add(15);
        b.add(20);
        a.addAll(b);
       for(int temp:a){
           System.out.println(temp);
       }
    }
}


②:或者用AU(B-A)的方法,对应的就是ArrayList的removeAll,addAll方法

package com.golden.util;

import java.util.ArrayList;
import java.util.Collection;

public class Test {
    public static void main(String[] args) {
        Collection<Integer> a = new ArrayList<Integer>();
        a.add(3);
        a.add(5);
        a.add(8);
        a.add(11);
        Collection<Integer> b = new ArrayList<Integer>();
        b.add(2);
        b.add(6);
        b.add(8);
        b.add(9);
        b.add(11);
        b.add(15);
        b.add(20);
        b.removeAll(a);
        a.addAll(b);
        for (int temp : a) {
            System.out.println(temp);
        }
    }
}

③:或者这样写(与②中代码思想一致):

        /*
         for (Integer temp : b) {
            if (!a.contains(temp)) {
                a.add(temp);
            }
        }
        */
        Collection<Integer> temps = new ArrayList<Integer>();
        for (Integer temp : b) {
            if (!a.contains(temp)) {
                temps.add(temp);
            }
            }
        a.addAll(temps);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-18
先用双重for循环遍历数组,然后比较里面的元素,A里面没有的就新增,有的就跳过
for(i){
for(j){

if(la.i=lb.j){
l.a.add(lb.j);
}

}

}
大致思路 具体内容要添加追问

能不能把完整的写出来,我会加分的~~

追答

package blackjack;

import java.util.List;

public class Aadds {
//输入两个集合,返回新集合
public List a(List l1,List l2){
for(int i =0;i<l1.size();i++){
if(!l2.contains(l1.get(i))){
l2.add(l1.get(i));
}
}
return l2;
}
}

第2个回答  2014-10-18

是要写出java的代码吗?

如果是的话,还是很容易的,只要开辟两个字符串就能搞定。去重的另加操作。

相似回答