试图在Java </float>中找到ArrayList <float>中的max元素

时间:2012-11-23 12:21:23

标签: java arraylist max

我在Java中有一个带有Float元素的ArrayList,我试图找到具有最大值的元素的位置。 我尝试使用以下代码执行此操作,但它没有工作:

 Float obj = Collections.max(arraylist);
    int index=arraylist.indexOf(obj);

问题是Collections.max()似乎适用于int值,在我的情况下会返回错误的结果。

关于出了什么问题的任何想法,我怎么能以不同的方式做到这一点?

更正:问题不在我想到的地方,而是在向Arraylist添加元素时。我添加的值是函数的float结果。我在添加之前打印函数的结果,然后我使用通常的arraylist.add(value)代码,但是当我要求在添加后立即打印arraylist的值时,会返回一个完全不同的值:/ < / p>

3 个答案:

答案 0 :(得分:1)

我找到了家伙! 问题是,不是将函数的结果存储在浮点值中然后使用它,我每次想要值时调用该函数以节省内存空间。 我忘了初始化函数的一个值,所以每次它给我一个不同的起始值,所以每当我调用函数它返回一个不同的结果..

非常感谢你的帮助,如果没有你的问题我可能花了很长时间才找到它,这让我想到了真正的问题:)

答案 1 :(得分:0)

IndexOf 返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回-1,而不是您要查找的最大值。

在此检查文档http://download.java.net/jdk7/archive/b123/docs/api/java/util/ArrayList.html#indexOf(java.lang.Object

您还必须指定存储在ArrayList上的元素的类型。试试:

... new ArrayList<Float>() ; .. 

答案 2 :(得分:0)

希望您添加以下两个库...

import java.util.ArrayList;
import java.util.Collections;
你可以试试这段代码吗?而不是保存到Float对象,

Object obj = Collections.max(arrayList);