当前位置: 首页 > 面试题库 >

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

海典
2023-03-14
问题内容

我想在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; 
}

问题答案:
//Union 
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) {
    for(Integer num:iterateOver){
        if(toAddTo.indexOf(num) == -1) {
            toAddTo.add(num);
        }
    }
}

//intersection
List<Integer> c = new ArrayList<Integer> (a.size() > b.size() ?a.size():b.size());
c.addAll(a);
c.retainAll(b);

//difference a-b
List<Integer> c = new ArrayList<Integer> (a.size());
c.addAll(a);
c.removeAll(b);


 类似资料:
  • 我正在运行一个运行jetty的简单java进程,上面显示了2.9g的RAM。使用的JDK版本是1.8.0_112。 使用本机内存跟踪(jcmd),它显示提交的总内存仅为1.5G内存 而且,正如jvisualvm所报告的,直接缓冲池的大小非常小。 我完全知道NMT显示的内存是提交内存,不需要在RAM中。在这种情况下,NMT内存对RES的贡献应该是 在我的例子中,这里的差异约为1.4G(RES显示内存

  • 问题内容: 我使用以下行以相反的顺序对浮点数组进行排序,但出现错误消息,这是什么问题? 错误:找不到符号 符号:方法sort(float [],java.util.Comparator)位置:类java.util.Arrays Arrays.sort(sortedData,Collections.reverseOrder()); ==================================

  • 我在AP计算机科学的9年级,我们得到了一个制作游戏的项目。我选择了老师建议的一个简单的气游戏。但我不知道如何在电脑和播放器之间交替旋转。

  • 问题内容: 我想实现 .NET的时间段库中 提供的类似功能,但要实现SQL中的类似功能。 首先,我有一个表,其中有几行带有开始日期和结束日期, 我想像这样将它们合并在一起: 组合 然后,根据该结果和另一个来自不同表的结果,我想 找出它们两者之间的交集,像这样,但是只有2个输入 (找到两个中都存在的周期): 路口 一旦我有了交叉路口,便只是在上面总结时间。 在这里,我通过示例提供了一个SQL Fid

  • 问题内容: 我可以在其他具有相同列名的数据框的右边追加一个数据框吗 问题答案: 您可以像这样连接两个数据框。 如果您正在寻找联盟,则可以执行以下操作。 Spark 2.0,已重命名为

  • 我们如何一起使用数组和数组列表(如果可能的话)? 我想将一些字符串存储到数组列表中,稍后将它们取出,解析成字符串数组,将这些数组存储在数组列表中,稍后能够从数组列表中检索数据... 查看这段代码,并随意将我拆分为做蹩脚的编码;我已经有一段时间没有使用Java了。 在前面,我已经将一些外部文件转储到< code>nonParsedData中。就是一串弦。没什么大不了的。我取出这些字符串,读取它们,放