【问题标题】:Java: Effizient List Sorting [duplicate]Java:高效列表排序
【发布时间】:2016-01-29 21:07:10
【问题描述】:

我有一个 List 包含可变数量的对象(通常超过 1000 个)。这些对象具有某些属性,例如价格和距离(均为 int)。

现在我希望能够将List 从最便宜到最贵从最近到最远排序,但我不知道如何实现。我已经尝试让我的对象实现Comparable,但这只能让我按其中一个属性进行排序...如何根据不同的属性进行排序?

【问题讨论】:

标签: java sorting comparable


【解决方案1】:

创建Comparator 的两种不同实现——一种比较价格,一种比较距离。

然后您可以使用Collections.sort(List, Comparator) 使用您想要的任何排序策略对列表进行排序。

【讨论】:

    【解决方案2】:

    您应该只使用Collections.sort(...) 并为每种类型的排序实现自定义比较器,例如按价格。

    Collections.sort(effizientObjects, new Comparator<EffizientObject>() {
        @Override public int compare(EffizientObject p1, EffizientObject p2) {
            return p1.price- p2.price;
        }
    });
    

    【讨论】:

    • 注意:您应该使用Integer.compare(或Double.compare,或任何类型)来比较数值,而不是相减,以避免溢出。
    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 2013-11-28
    相关资源
    最近更新 更多