我试图找出数组中的所有元素是否都是唯一的。 PS:我还是个新手。所以,如果有的话,忽略错误的方法。
public static boolean isUnique(int[] arr)
{
Integer[] integ = new Integer[arr.length];
for (int i = 0; i < arr.length; i++)
{
integ[i] = arr[i];
}
Set<Integer> temp = new HashSet<Integer>(Arrays.asList(integ));
for (int j = 0; j < integ.length; j++)
{
temp.add(integ[j]);
}
if(temp.size()==arr.length)
{
return true;
}
else return false;
答案 0 :(得分:4)
使用Java-8方法会更容易:
public static boolean isUnique(int[] arr) {
return IntStream.of(arr).distinct().toArray().length == arr.length;
}
答案 1 :(得分:1)
除了一些冗余代码之外,原始isUnique()
没有任何问题。
您的问题是SolveMagicSquare
的内部循环仅分配给currentRow
数组的单个索引。根据您的问题,您使用的是4x4阵列。您调用isUnique(currentRow)
的前两次,currentRow
仍包含2个或更多0,因为currentRow
的最后两个索引尚未初始化。这就是isUnique()
返回false的原因。
您可能想要更改
currentRow[i] = input1[i][j];
到
currentRow[j] = input1[i][j];
或刚过input[i]
到isUnique()
并消除currentRow
和内循环。