我有一个包含订单条目的列表。每个订单条目都有一个基本价格。我想在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列表中删除并添加此项(orderEntry.iterator().next())
?
如果它不是推荐的解决方案,并且可以通过Collections.sort进行,那么请给我解决方案。
答案 0 :(得分:0)
据我了解,您希望在列表末尾放置与谓词匹配的项目。这可以直截了当地完成:
List<AbstractOrderEntryModel> list=source.getEntries()
final Collection<AbstractOrderEntryModel> orderEntry = Collections2.filter(list,
new Predicate<AbstractOrderEntryModel>()
{
public boolean apply(final AbstractOrderEntryModel arg)
{
return arg.getBasePrice().doubleValue() == 0;
}
});
if(!orderEntry.isEmpty()) {
assert orderEntry.size()==1; // so you said in your question
AbstractOrderEntryModel e=orderEntry.iterator().next();
list.remove(e);
list.add(e);
}