public static String duplicate(int[] numbers){
Set<Integer> set = new HashSet<>();
Set<Integer> duplicates = new HashSet<>();
for (int num : numbers){
if (set.contains(num)) {
duplicates.add(num);
} else {
set.add(num);
}
}
int[] ans = duplicates.toArray();
return ans.sort().toString();
}
Eclipse对int[] ans = duplicates.toArray();
行说“类型不匹配:无法从Object []转换为int []”
为什么不呢?我也尝试了LinkedList和ArrayList。 HashSet()使用该类型,而.toArray()函数是否认为返回将是Object []?
答案 0 :(得分:3)
Set.toArray返回Object
数组
Object [] toArray()
您可以将Set<Integer>
转换为Integer
数组
Integer[] i = duplicates.toArray(Integer[]::new);
或者您可以通过迭代stream
Set
int[] arr = duplicates.stream().mapToInt(i->i).toArray(); // or mapToInt(Integer::intValue)
注意:另一方面,您的方法返回类型为String
,而arr.toString()
返回对象的字符串表示形式,例如[I@edf4efb
here >
返回对象的字符串表示形式。通常,toString方法返回一个“以文本形式表示”此对象的字符串。结果应该是简洁但内容丰富的表示形式,便于人们阅读
答案 1 :(得分:0)
int []是Java中的原始数据类型,它是对象而不是类。 如果需要转换为Object []类,则可以使用Integer []的Wrapper类,因为它们是从Object类继承的。
有关Java包装类的更多信息:https://www.geeksforgeeks.org/wrapper-classes-java/