【问题标题】:Trying to find max element in ArrayList<Float>, in Java [closed]试图在 Java 中的 ArrayList<Float> 中找到最大元素 [关闭]
【发布时间】:2012-11-23 12:21:23
【问题描述】:

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

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

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

对出了什么问题有什么想法吗?我该如何以不同的方式做到这一点?

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

【问题讨论】:

标签: java arraylist max


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    Object obj = Collections.max(arrayList);
    

    【讨论】:

    • 类似question
    • 是的,我确实添加了库。我试图将其更改为 Object 但仍然无法正常工作:S
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 事实上它应该返回max_element 的索引,它是用Collection.max() 找到的
    • @alji-mohamed 是的,但是 Collections.max() 确实(或至少应该)返回最大值,具体取决于 Comparable 实现。
    • 我认为他用 int 而不是 Float 定义了 ArrayListFloat >()。请检查!
    • @ALJIMohamed “ArrayList() with int”是什么意思?
    • ArrayList&lt;int&gt;() 这意味着 ArrayList 应该存储整数。如果你把浮点数放在上面,它会向下(或向上)四舍五入!
    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2016-03-19
    相关资源
    最近更新 更多