如何让代码在Java中查找数组中的数字是否重复?

如何让代码在Java中查找数组中的数字是否重复?,java,arrays,duplicate-detection,Java,Arrays,Duplicate Detection,我已经为此编写了代码,但它不起作用。如果它能够工作,那么运行时的复杂性将非常高 for (int collumnInput=0; collumnInput < 3; collumnInput++) { for (int rowInput = 0; rowInput < 3; rowInput++) { try { pu

我已经为此编写了代码,但它不起作用。如果它能够工作,那么运行时的复杂性将非常高

for (int collumnInput=0; collumnInput < 3; collumnInput++)
        {
            for (int rowInput = 0; rowInput < 3; rowInput++)
            {
                try
                {
                    puzzleArray[collumnInput][rowInput] = scan.nextInt();

                    if ((puzzleArray[collumnInput][rowInput] > 8) || (puzzleArray[collumnInput][rowInput] < 0))
                    {
                        System.out.println("Invalid 8-puzzle entered!");
                        System.exit(0);
                    }
                    for (int collumnCheck = 0; collumnCheck < collumnInput; collumnCheck++)//code to check for duplicates starts here.
                    {
                        for (int rowCheck = 0; rowCheck < rowInput; rowCheck++)
                        {
                            if (puzzleArray[collumnCheck][rowCheck]==puzzleArray[collumnInput][rowInput])
                            {
                                System.out.println("Invalid 8-puzzle entered!");
                                System.exit(0);
                            }
                        }
                    }

                }
                catch (java.util.InputMismatchException exception)
                {
                    System.out.println("Invalid 8-puzzle entered!");
                    System.exit(0);
                }

            }
        }
        scan.close();
for(int-collumnInput=0;collumnInput<3;collumnInput++)
{
对于(int-rowInput=0;rowInput<3;rowInput++)
{
尝试
{
拼图数组[collumnInput][rowInput]=scan.nextInt();
if((拼图数组[collumnInput][rowInput]>8)| |(拼图数组[collumnInput][rowInput]<0))
{
System.out.println(“输入的8字谜无效!”);
系统出口(0);
}
for(int collumnCheck=0;collumnCheck

首先,这里的代码运行,但在数组中没有检测到重复项,那么如何修复?第二件事是,有没有一种更节省资源的方法?我见过人们使用克隆和复制方法,但我不知道这些方法是否真的更节省资源。谢谢。

要回答标题中的问题,我只需一行:

Integer[] array; // given this type of array
boolean hasRepeats = new HashSet<Integer>(Arrays.asList(array)).size() != array.length;
Integer[]数组;//给定这种类型的数组
boolean hasRepeats=新哈希集(Arrays.asList(array)).size()!=数组长度;

对不起,你不是说hashmap吗?@kickbutowski是correct@PhamTrung如果你声称某事,请提供一些解释,如果你有能力:)@kickbutowski他只是用一个hashSet来计算不同元素的数量,如果不同元素的数量等于数组的长度,因此,使用HashSet类解决问题将确保集合中的每个元素都是唯一的。如果数组中有重复的元素,则只保留其中一个。之后,长度将明显缩短。