按float对对象的ArrayList进行排序

5

我有一个股票价格的arraylist,每个股票价格都有名称、股票交易所、价格和日期。

我正在尝试按价格(浮点数)对arraylist进行组织。

如果有任何指导意见,将不胜感激。

6个回答

7

根据JDK 1.7的要求,当反转参数位置时,结果必须相同。

comparator.compare(a, b) == -comparator.compare(b, a)

因此,减法将是错误的,我认为以下代码是排序浮点数组的最简单方法。
Collections.sort(Arrays, new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {
                return Float.compare(o1.getFloatValue(), o2.getFloatValue());
            }
        });

6
使用java.util.Collections.sort()方法并指定自己的java.util.Comparator来排序。

谢谢。这是否考虑了28比-123大的情况? - user1235720
@Vuzuggu,您在“比较器”中定义了排序规则。 - hmjd

4

您需要实现自己的比较器或使您的stocprices扩展Comparable接口。

Collections.sort(stockPricesArrayList, new Comparator<StockPrice>() {

    public int compare(StockPrice p1, StockPrices p2) {
         return (int) p1.getPrice()-p2.getPrice();
    }
}

1
在你的 StockPrice 类中,你可以实现 Comparable 接口。它看起来像这样:
public class StockPrice implements Comparable<StockPrice> {

    // All your code here

    @Override
    public int compareTo(StockPrice another) {
        // price fields should be Float instead of float
        return this.price.compareTo(another.price);
    }

}

你可以使用Collections.sort()


0

我假设你有一个用于存储价格的类。最简单的方法是在这个类中实现Comparable,并返回类似于Float.compare(this.price, other.price)的内容。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接