数组的包含,重复,分析 提取左不同,右不同,相同

Zeroes 发布于 2015/05/21 18:03
阅读 143
收藏 1
List<String> sss = new ArrayList<String>();
        sss.add("1");
        sss.add("2");
        sss.add("3");
        sss.add("4");
        sss.add("5");
        List<String> ddd = new ArrayList<String>();
        ddd.add("3");
        ddd.add("4");
        ddd.add("5");
        ddd.add("6");

        ddd.add("7");

List<String> a= new ArrayList<String>();

List<String> b= new ArrayList<String>();

List<String> c= new ArrayList<String>();

我想要 a = 1,2  b = 3,4,5 c= 6,7 有什么好的算法


加载中
0
Zeroes
Zeroes
public static <E> Map<String, List<E>> tongji(List<E> newList,List<E> list){
        // 左边拥有右边没有的
        ArrayList<E> leftHave = new ArrayList<E>();
        // 右边拥有左边没有的
        ArrayList<E> rightHave = new ArrayList<E>();
        // 左右都拥有的
        ArrayList<E> equalsHave = new ArrayList<E>();
        leftHave.addAll(list);
        for (E entity : newList) {
            if(list.contains(entity)){
                leftHave.remove(entity);
                equalsHave.add(entity);
            }else{
                rightHave.add(entity);
            }
        }
        Map<String, List<E>> tongji = new HashMap<String, List<E>>();
        tongji.put(CollectionUtil.LEFTHAVE, leftHave);
        tongji.put(CollectionUtil.RIGHTHAVE, rightHave);
        tongji.put(CollectionUtil.EQUALSHAVE, equalsHave);
        return tongji;
    }
0
Lesalie
Lesalie
public static void main(String[] args) {
	List<String> sss = new ArrayList<String>();
        sss.add("1");
        sss.add("2");
        sss.add("3");
        sss.add("4");
        sss.add("5");
        
        List<String> ddd = new ArrayList<String>();
        ddd.add("3");
        ddd.add("4");
        ddd.add("5");
        ddd.add("6");
        ddd.add("7");

	List<String> a= jointList(sss, ddd, false);
	List<String> b= jointList(sss, ddd, true);;
	List<String> c= jointList(ddd, sss, false);
		
	System.out.println(a);
	System.out.println(b);
	System.out.println(c);
}
	
public static List<String> jointList(List<String> src, List<String> target, boolean joint){
	List<String> jointList = new ArrayList<String>();
	for (String str : src) {
		if (!(target.contains(str) ^ joint)){
			jointList.add(str);
		}
	}
	return jointList;
}



返回顶部
顶部