Java 如果数组具有相同的元素,则返回True

Java 如果数组具有相同的元素,则返回True,java,Java,我需要一些帮助来比较两个数组,这两个数组以前是用另一种方法创建的。它们被称为EnterNumber、用户输入数组和DrawNumber,这是一个随机生成的数组 我的方法头应该如下所示: public static boolean containSameElements(int[] enterNumbers, int[] drawNumbers) { } 该方法应比较两个数组,如果数字相同,则返回true,而不考虑顺序 不是寻找答案,只是找个地方开始。好吧,你也可以 使用基于散列的映射/集合

我需要一些帮助来比较两个数组,这两个数组以前是用另一种方法创建的。它们被称为EnterNumber、用户输入数组和DrawNumber,这是一个随机生成的数组

我的方法头应该如下所示:

 public static boolean containSameElements(int[] enterNumbers, int[] drawNumbers)
{

}
该方法应比较两个数组,如果数字相同,则返回true,而不考虑顺序

不是寻找答案,只是找个地方开始。

好吧,你也可以

使用基于散列的映射/集合创建两个元素以计数元素 在每个数组中,然后比较集合/贴图。此解决方案已启用 空间和时间平均。看看这个。您想要映射还是设置取决于重复项的存在是否重要

另一种解决方案是排序和迭代。这是唯一最糟糕的时刻 案例请查看此解决方案

先把它们分类

  Arrays.sort(enterNumbers);
  Arrays.sort(drawNumbers);

  if(Arrays.equals(enterNumbers, drawNumbers)){
            System.out.println("both are same");
    }

这是一个非常常见的问题,可以使用不同的方法来解决。如果我理解正确的话,所有的数字都必须在两个数组中,但它们不必在相同的索引中


然后,您可以使用两个计数器进行while/for循环;每个数组一个,并检查第一个数组中索引0上的数字是否等于第二个数组中的任何数字。如果没有,则while/for循环完成,测试失败。如果它确实存在,则转到第一个数组中的下一个索引。继续,直到所有内容都已测试完毕。第一个数组中的数字与第二个数组中的数字相对,或者直到两个数组中都不存在数字。祝你好运

数字计数呢?比如说,如果有5个3,那么如果将[3]与[3,3,3]进行比较,它会返回true吗?如果你不是在寻找答案,那么你至少要问一个连贯的具体问题。@NandkumarTekale:这将使[1,2,2]等于[1,1,2],而[1,2,3]我会首先检查数组的长度是否相同,如果不是这样,则返回false。然后我会对数组进行排序,遍历一个数组,并检查int是否在同一个位置相同。@NandkumarTekale:将它们转换为集合不会改变任何东西。问题仍然是一样的。你不能使用集合,因为它不能解释重复的情况。@arshajii好吧,这取决于它是否重要-关于这方面的问题是含糊不清的。相反,Map将满足这一需要。如果它像一个lotery,你将不会得到相同的int两次,但确实,OP没有提到这一点!!我不喜欢这个答案,因为:不是在寻找答案,也许只是一个开始。谢谢!这对我真的很有帮助,我要尝试一下。这是一个效率很低的解决方案,平均案例时间复杂度和空间复杂度分别为^2。
if (drawNumbers.length != enterNumbers.length)
    return false;
List<Integer> base = new ArrayList<Integer>();
for (Integer i : drawNumbers)
    base.add(i);
for (Integer i : enterNumbers)
    base.remove(i);

return base.isEmpty();