如何让代码在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类解决问题将确保集合中的每个元素都是唯一的。如果数组中有重复的元素,则只保留其中一个。之后,长度将明显缩短。