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

比较两个ArrayList以获取唯一值和重复值

柳奇希
2023-03-14
问题内容

我有两个ArrayLists如图所示-
pinklistnormallist。我正在对它们进行比较,并从两者中找到唯一值和重复值,如下代码所示:

List<String> pinklist = t2.getList();
List<String> normallist = t.getList();
ArrayList<String> duplicatevalues = new ArrayList<String>();
ArrayList<String> uniquevalues = new ArrayList<String>();

for (String finalval : pinklist) {
    if (pinklist.contains(normallist)) {
        duplicatevalues.add(finalval);
    } else if (!normallist.contains(pinklist)) {
        uniquevalues.add(finalval);
    }
}

我得到的是duplicateValues正确的,但是我没有得到唯一的值。


问题答案:

您将忽略finalval条件,而是询问一个 列表 是否包含另一个 列表

您可以这样做:

// Variable names edited for readability
for (String item : pinkList) {
    if (normalList.contains(item)) {
        duplicateList.add(item);
    } else {
        uniqueList.add(item);
    }
}

不过,我不会真正称这些“独特”或“重复”的物品-这些物品通常是关于 一个收藏
夹中的物品的。这只是测试一个列表中的每个项目是否在另一个列表中。我会说,在这种情况下,它更像是“现有”和“新”。

请注意,当您以基于集合的方式处理这些内容时,建议您使用集合实现(例如HashSet<E>列表)。Guava中的Sets类提供了处理集合的有用方法



 类似资料:
  • 我有两个如图所示-和。我正在比较这两个值,并从中找到唯一的和重复的值,如下代码所示: 我正在正确获取,但没有获取唯一值。

  • 有两个df df1 df2 预期产出: 从数据帧中获取唯一行比较,并在df1中显示唯一列 df1

  • 问题内容: 我有两个Arraylist 其包含以下值是 AllProcessList arraylist包含所有Java进程,RunningProcessList arraylist包含当前正在运行的进程。我想比较这两个arraylist并显示是否未运行该进程。例如,比较两个列表并要显示以下进程未运行。 我使用了以下代码,但无法正常工作。 问题答案: 查看List的文档,尤其是removeAll(

  • 问题内容: 我有两个。每个大小为100000。我想比较它们并计算匹配的元素。 这是我的代码: 在这里比较过程要花费很多时间。 如何解决和优化此问题。 问题答案: 您应该使用:返回一个包含collection1中所有元素的集合,这些元素也处于collection2中。

  • 我正在做一个学校作业,我必须检查ArrayList teKoop中的某些对象是否不在ArrayList mijnGames中,问题是我一直设置这个错误代码:索引1 out of length 1 out of bounds for length 1 这里有什么明显的问题吗? 如有任何帮助,我们将不胜感激。 因此indexOutOfBound错误已修复,新问题出现:s 它一直返回给我一个空的Arra

  • 我使用了将我的数据帧过滤为两列“Worker”和“Time Type”。 示例数据集 我现在只想看到那些“兼职”或“全职”的输出。 到目前为止,我构建的代码是: 但是我得到了错误 有人知道一个简单的方法来解决这个问题吗? 理想情况下,我想以两件事结束: > 显示全职和兼职员工的输出。 另一个显示此参数以外异常的输出,即第2行中的“Tom”显示“paert Tme”,这是一个异常,值得作为单独的输出