【发布时间】:2014-10-22 10:00:34
【问题描述】:
我有一个包含订单条目的列表。每个订单条目都有一个基准价格。我想按 entry.basePrice 降序对这个列表进行排序(enty.basePrice == 0 条目应该在底部)。
在此列表中,要么没有条目有 0 价格,要么有一个条目。我就是这样的..
final Collection<AbstractOrderEntryModel> orderEntry = Collections2.filter(source.getEntries(),
new Predicate<AbstractOrderEntryModel>()
{
@Override
public boolean apply(final AbstractOrderEntryModel arg)
{
return arg.getBasePrice().doubleValue() == 0 ? true : false;
}
});
在这里,我过滤了 baseprice = 0.0 的条目
现在我将如何在 OrderEntry List 中删除和添加这个项目 (orderEntry.iterator().next()) 最后?
如果它不是推荐的解决方案,并且可以通过 Collections.sort 也可以,那么请给我解决方案。
【问题讨论】:
-
您可以将这些条目存储在其他地方并在过滤后将它们包含在最后吗?
-
你可以编写一个自定义的比较器来比较订单对象的价格。然后使用 Collections.sort(...) 进行排序。
-
这些扭曲的布尔表达式永远存在……
arg.getBasePrice().doubleValue() == 0是已经是true或false。为什么要在后面加上? true : false,只是为了炫耀你知道三元运算符? -
@Holger 我总是问为什么只问一次。
(arg.getBasePrice().doubleValue() == 0 ? true : false) ? true : false会更好吗? -
嘿,伙计们,我的问题不同,你去了另一个话题。你能告诉我一些例子吗?
标签: java sorting collections guava predicate