【问题标题】:Printing Common Values of Two Arrays打印两个数组的共同值
【发布时间】:2014-02-04 21:16:29
【问题描述】:

我正在处理一个 java 项目,需要打印两个数组之间的公共值。

我事先已经按排序顺序打印了两个数组,它们看起来都不错(包含它们应该包含的所有值)。但是,当我遵循最简单的算法(见下文)时,即使我可以在两个数组的打印输出中手动看到没有比较的情况下,执行以下操作后应该打印更多值,我也没有找到所有常见值:

        for(int i=0; i<fibList.size(); i++)
        {
            for(int j=0; j<primeList.size(); j++)
            {
                if(fibList.get(i) == primeList.get(j))
                {
                    System.out.print(" " + fibList.get(i));
                    break;
                }
            }
        }

请告诉我你的想法。希望这只是一个简单的错误。

【问题讨论】:

  • 您的清单中有什么? Integer 对象还是什么?
  • 这是作业吗?此外,如果列表由字符串组成,您可能想尝试 .equals() 而不是 ==
  • 它们是对象数组吗?如果这样 == 不起作用,请使用 fibList.get(i).equals(primeList.get(j))
  • 问题是整数是对象而不是基元。 .equals 是必要的

标签: java arrays


【解决方案1】:

您很可能想要:

变化:

if(fibList.get(i) == primeList.get(j))

收件人:

if(fibList.get(i).equals(primeList.get(j)))

【讨论】:

  • 正是我需要的!谢谢!
【解决方案2】:
List<Integer> result = new ArrayList<Integer>(fibList);
result.retainAll(primeList);
for (Integer i : result) {
    System.out.println(i);
}

【讨论】:

  • 太棒了,谢谢你让我知道retainAll()。 +1
【解决方案3】:

if(fibList.get(i).equals(primeList.get(j))) 可以使用。

【讨论】:

    猜你喜欢
    • 2023-01-18
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 2013-08-28
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多