2

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

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

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

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

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

4

3 回答 3

1

我找到了伙计们!问题在于,我没有将函数的结果存储在浮点值中然后使用它,而是在每次需要该值时调用该函数以节省内存空间。虽然我忘记初始化函数的一个值,所以每次它给我一个不同的起始值,所以每次我调用这个函数时它都会返回一个不同的结果..

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

于 2012-11-23T13:17:56.893 回答
0

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

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

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

... new ArrayList<Float>() ; .. 
于 2012-11-23T12:25:38.240 回答
0

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

import java.util.ArrayList;
import java.util.Collections;

你能试试这个代码吗?而不是保存到 Float 对象,

Object obj = Collections.max(arrayList);
于 2012-11-23T12:26:50.447 回答