【发布时间】:2018-03-11 07:37:33
【问题描述】:
当我将 ArrayList 传递给 TreeSet 构造函数时,我收到以下错误:
Exception in thread "main" java.lang.ClassCastException: [I cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(TreeMap.java:1294)
at java.util.TreeMap.put(TreeMap.java:538)
at java.util.TreeSet.add(TreeSet.java:255)
at java.util.AbstractCollection.addAll(AbstractCollection.java:344)
at java.util.TreeSet.addAll(TreeSet.java:312)
at java.util.TreeSet.<init>(TreeSet.java:160)
at jay.week1.MaxPairwiseProduct.getMaxPairwiseProduct(MaxPairwiseProduct.java:8)
at jay.week1.MaxPairwiseProduct.main(MaxPairwiseProduct.java:17)
我在这一行收到上述错误:
TreeSet<Integer> set = new TreeSet(Arrays.asList(numbers));
这是完整的程序:
import java.util.*;
public class MaxPairwiseProduct {
static int getMaxPairwiseProduct(int[] numbers) {
TreeSet<Integer> set = new TreeSet(Arrays.asList(numbers));
int max1 = set.pollLast();
int max2 = set.pollLast();
int result = max1 * max2;
return result;
}
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
System.out.println(getMaxPairwiseProduct(numbers));
}
}
我做错了什么?
【问题讨论】:
-
请包含实际的失败代码。
-
TreeSet
set = new TreeSet(Arrays.asList(numbers)); -
将
int[] number更改为Integer [] number。 -
Arrays.asList 的整数数组不会自动将基元装箱为整数对象...您最好使用循环创建整数对象列表并将 Treeset 实现更改为 @987654326 @
-
您在
new TreeSet<>(...)中缺少通用运算符,并且您会收到关于它的编译器警告。加上它,它可能能够推断出需要什么