我在尝试运行以下代码时遇到问题:
ArrayList paretoSet=new ArrayList(); // contains a collection of ArrayList
ArrayList<Integer> toPass=new ArrayList<Integer>();
int[] fParetoSet=new int[ParetoSet.size()];
int[] gParetoSet=new int[ParetoSet.size()];
for (int i=0;i<paretoSet.size();i++){
toPass.clear();
toPass.add((Integer)paretoSet.get(i));
int [] totake=calculate(toPass);
fParetoSet[i]=totake[0];
gParetoSet[i]=totake[1];
}
`
其中claculate(ArrayList x)是一个采用整数arraylist并返回整数数组的方法。我不能让Paretoset成为一个整数的arraylist,因为它会在我的程序的其他部分产生问题。我在 toPass.add((Integer)paretoSet.get(i))行中遇到异常;
as java.lang.ClassCastException:java.util.ArrayList无法强制转换为java.lang.Integer
我该如何解决这个问题呢?
提前致谢
答案 0 :(得分:2)
如果ParetoSet
是ArrayList
的集合,则来电ParetoSet.get(i)
将在索引ArrayList
返回i
。如错误所示,ArrayList
不是Integer
的类型,也不能转换为pareToSet
。
其他兴趣点:
Paretoset
new ArrayList<Integer>()
已声明为原始类型paretoSet
变得多余
修改强>
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.ArrayList<E>
All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess
,根据Jim的评论修改强>
ArrayList既不是概念上的,也不是实际的整数。如果你说句子&#39;列表是一种整数&#39;它没有意义。如果我们检查javadoc的ArrayList,我们可以看到它的继承树是:
ArrayList
因此,我们可以说AbstractList
类型为AbstractCollection
或Integer
,但不是Integer
,因为{{1}}不属于{{1}}它的血统。
答案 1 :(得分:0)
你的程序在下面的行中有类型转换问题。 您正在尝试向Integer arryalist添加类型列表的arraylist。这个错了。如果你想将arraylist对象添加到其他arryalist。请使用泛型作为对象。
ArrayList ParetoSet=new ArrayList(); // contains a collection of ArrayList
toPass.add((Integer)ParetoSet.get(i));
这应该如下所示:
ArrayList<ArrayList> ParetoSet=new ArrayList<ArrayList>();
ArrayList<ArrayList> toPass=new ArrayList<ArrayList>();
toPass.add(ParetoSet.get(i));
然后你应该改变代码位以适应你的逻辑