簡體   English   中英

按浮點數對對象的 ArrayList 進行排序

[英]Sorting ArrayList of objects by float

我有一個股票價格數組列表,每個股票價格都有一個名稱、證券交易所、價格和日期。

我正在嘗試按浮動價格組織數組列表。

任何指針將不勝感激。

根據JDK 1.7的要求,顛倒params的位置時結果必須相同

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());
            }
        });

使用java.util.Collections.sort()並指定您自己的java.util.Comparator

您需要實現自己的 Comparator 或使您的股票價格擴展 Comparable

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

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

在您的類 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()

我假設您有一個用於存儲價格的類。 這里最簡單的方法是在這個類中實現Comparable並返回類似Float.compare(this.price, other.price)

您需要實現 Comparable 接口,並為您的類定義 compareTo() 方法。 完成后,您可以擁有一個數組列表並對其進行排序。 有關示例,請參閱此鏈接 很少有更重要的鏈接是另一個示例以及可比較和比較器有用信息之間的差異

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM