我在Java中有一个带有Float元素的ArrayList,我试图找到具有最大值的元素的位置。 我尝试使用以下代码执行此操作,但它没有工作:
Float obj = Collections.max(arraylist);
int index=arraylist.indexOf(obj);
问题是Collections.max()
似乎适用于int值,在我的情况下会返回错误的结果。
关于出了什么问题的任何想法,我怎么能以不同的方式做到这一点?
更正:问题不在我想到的地方,而是在向Arraylist添加元素时。我添加的值是函数的float结果。我在添加之前打印函数的结果,然后我使用通常的arraylist.add(value)
代码,但是当我要求在添加后立即打印arraylist的值时,会返回一个完全不同的值:/ < / p>
答案 0 :(得分:1)
我找到了家伙! 问题是,不是将函数的结果存储在浮点值中然后使用它,我每次想要值时调用该函数以节省内存空间。 我忘了初始化函数的一个值,所以每次它给我一个不同的起始值,所以每当我调用函数它返回一个不同的结果..
非常感谢你的帮助,如果没有你的问题我可能花了很长时间才找到它,这让我想到了真正的问题:)
答案 1 :(得分:0)
IndexOf 返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回-1,而不是您要查找的最大值。
您还必须指定存储在ArrayList上的元素的类型。试试:
... new ArrayList<Float>() ; ..
答案 2 :(得分:0)
希望您添加以下两个库...
import java.util.ArrayList;
import java.util.Collections;
你可以试试这段代码吗?而不是保存到Float对象,
Object obj = Collections.max(arrayList);