如何在Java中进行合并,相交,差异和反向数据

我想在Java中进行联合,相交,差异和反向操作。


首先我有2个实例 ArrayList<Integer>


a = [0,2,4,5,6,8,10]

b = [5,6,7,8,9,10]

联盟b应该返回 c = [0,2,3,4,5,6,7,8,9,10]


a相交b应该返回 c = [5,8,10]


a偏差b应该返回 c = [0,2,3,4]


相反 a = [10,8,6,5,4,2,0]


这样的事情。


如何在Java中实现该方法?


更新:我必须从以下模板开始:


package IntSet;

import java.util.ArrayList;

import java.util.Collection;



public class IntSet {


private ArrayList<Integer> intset;


public IntSet(){

    intset = new ArrayList<Integer>();

}


public void insert(int x){

    intset.add(x);

}


public void remove(int x){

    //implement here

    intset.indexOf(x);

}


public boolean member(int x){

    //implement here

    return true;

}


public IntSet intersect(IntSet a){

    //implement here

    return a;

}


public IntSet union(IntSet a){

    //implement here

    return a;

}


public IntSet difference(IntSet a){

    //implement here

    IntSet b = new IntSet();

    return b; 

}


ibeautiful
浏览 556回答 3
3回答

墨色风雨

//Union&nbsp;List<Integer> c = new ArrayList<Integer>(a.size() + b.size());addNoDups(c,a);addNoDups(c,b);private void addNoDups(List<Integer> toAddTo,List<Integer> iterateOver) {&nbsp; &nbsp; for(Integer num:iterateOver){&nbsp; &nbsp; &nbsp; &nbsp; if(toAddTo.indexOf(num) == -1) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; toAddTo.add(num);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}//intersectionList<Integer> c = new ArrayList<Integer> (a.size() > b.size() ?a.size():b.size());c.addAll(a);c.retainAll(b);//difference a-bList<Integer> c = new ArrayList<Integer> (a.size());c.addAll(a);c.removeAll(b);

动漫人物

首先,您描述的操作(反向操作除外)是集合操作,而不是列表操作,因此请使用HashSet或(如果需要订购)TreeSet。&nbsp; &nbsp; Set<Integer> a = new TreeSet<Integer>(Arrays.asList(new Integer[]{0,2,4,5,6,8,10}));&nbsp; &nbsp; Set<Integer> b = new TreeSet<Integer>(Arrays.asList(new Integer[]{5,6,7,8,9,10}));&nbsp; &nbsp; //union&nbsp; &nbsp; Set<Integer> c = new TreeSet<Integer>(a);&nbsp; &nbsp; c.addAll(b);&nbsp; &nbsp; System.out.println(c);&nbsp; &nbsp; //intersection&nbsp; &nbsp; Set<Integer> d = new TreeSet<Integer>(a);&nbsp; &nbsp; d.retainAll(b);&nbsp; &nbsp; System.out.println(d);&nbsp; &nbsp; //difference&nbsp; &nbsp; Set<Integer> e = new TreeSet<Integer>(a);&nbsp; &nbsp; e.removeAll(b);&nbsp; &nbsp; System.out.println(e);&nbsp; &nbsp; //reverse&nbsp; &nbsp; List<Integer> list = new ArrayList<Integer>(a);&nbsp; &nbsp; java.util.Collections.reverse(list);&nbsp; &nbsp; System.out.println(list);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java