【问题标题】:How to sort a "Book" ArrayList without SQL?如何在没有 SQL 的情况下对“Book”ArrayList 进行排序?
【发布时间】:2011-04-12 04:54:11
【问题描述】:

My Book 应用通过查找不同的Merchant 对象来收集Book 对象的集合:

List<Book> books = new ArrayList<Book>();
for (Merchant merchant : merchants)
{
    books.addAll(getBooksForMerchant(merchantName);
}

它必须根据下拉框对列表进行排序:

<select class="sortByDropdown" name="sort">
<option value="lowPrice">Price: Low to High</option>
<option value="highPrice">Price: High to Low</option>
<option value="reviewRank">Avg. Customer Review</option>
</select>

鉴于Book 具有price 属性和reviewRank 属性,在按用户请求的顺序显示给用户之前,如何在Java 中对ArrayList 进行排序?

【问题讨论】:

标签: java sorting arraylist


【解决方案1】:

以与对任何列表进行排序相同的方式进行操作。实现Comparator 并调用Collections.sort(list, comparator)

拥有 3 种不同的排序方式意味着您可能需要创建 3 个实现,或者您可以控制一个实现来对 3 种方式进行排序。

【讨论】:

  • 一个比较器就足够了。仅以正确的顺序比较这 3 个条件很重要。
【解决方案2】:

yesterday 提出了几乎完全相同的问题:

简短的回答,根据您的解决方案需要的灵活性,您可以编写一个 Comparator,或者编写多个 Comparator 并将它们组合在一起以满足复杂的排序要求。

【讨论】:

    【解决方案3】:

    Ordering 非常适合这种类型的事情。 Ordering.compound() 允许您完全按照您描述的方式链接选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 2017-05-07
      • 2023-03-20
      • 2019-02-17
      • 2022-12-31
      • 2014-07-28
      • 1970-01-01
      相关资源
      最近更新 更多