我遇到了一个相当简单的问题。我有阵列的arraylist。我试图在arraylist中的数组中设置一个成员。但是,我收到了一些错误。你能帮我看一下吗?
public static ArrayList findPercentages(ArrayList<Object[]> al, int max)
{
ArrayList<Object[]> a = al;
for(int i = 0; i < al.size(); i++)
{
a.set(a.indexOf((i))[2],((Integer)al.get((i)[2])/max));
}
return a;
}
答案 0 :(得分:0)
语法为:
a.get(i)[2] = a.get(i)[2] / max;
a
中的每个元素都是Object[]
,因此a.get(index)
会返回Object[]
。
然而,这仍然无法正常工作,因为分部运营商不适用于Object
。您必须使用更具体的原始包装类型(例如Float
)而不是Object
。
如果您知道数组中的所有元素都是Float
(例如),您可以投射它:
a.get(i)[2] = (Float)a.get(i)[2] / max;
但这是草率,繁琐,容易出错,并且是一个红色标记,表明您应该使用更合适的类型。 (另外,您应该在返回的ArrayList
类型中指定一个类型参数;否则您将无法在整个地方进行可能不正确的未经检查/不安全的转换。)
顺便说一下,indexOf
方法用于查找列表中的项目,而不是访问特定索引处的项目。