[英]Why can't a HashSet or LinkedList of Integers converted to int[]?
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 表示“类型不匹配:无法从 Object[] 转换为 int[]”行int[] ans = duplicates.toArray();
为什么不? 我也尝试了 LinkedList 和 ArrayList。 HashSet() 使用类型,而.toArray() function 认为返回将是 Object[]?
Set.toArray返回Object
数组
对象[] toArray()
您可以将Set<Integer>
转换为Integer
数组
Integer[] i = duplicates.toArray(Integer[]::new);
或者您可以通过迭代Set
来使用 java-8 stream
int[] arr = duplicates.stream().mapToInt(i->i).toArray(); // or mapToInt(Integer::intValue)
注意:另一方面,您的方法返回类型是String
并且arr.toString()
返回 object 的字符串表示形式,例如[I@edf4efb
here
返回 object 的字符串表示形式。 通常,toString 方法返回一个字符串,该字符串“以文字形式表示”此 object。 结果应该是一个简洁但信息丰富的表示,易于人们阅读
int[] 是 Java 中的原始数据类型,它是 object 而不是 Class。 如果您需要转换为 Object[] Class,您可以使用包装类,它是 Integer[],因为它们继承自 Object class。
有关 Java 中的包装器类的更多信息: https://www.geeksforgeeks.org/wrapper-classes-java/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.