阅读Oracle文档后,我没有找到想要的东西。我有一个对象,可以用不同的方式比较它,但是它的属性之一是列表。如何根据该List属性的大小进行比较?
Comparator comparator = Comparator.comparing(Product::getCommentList::size);
List<Product> soldL = new LinkedList();
soldL.addAll(sold);
Collections.sort(soldL,comparator);
我尝试了上面的代码,但没有成功。
答案 0 :(得分:2)
您可以简单地使用lambda并将现有代码改进为:
Comparator<Product> comparator = Comparator.comparing(p -> p.getCommentList().size()); // type 'Product' bound
List<Product> soldL = new LinkedList<>(); // type inferred '<>'
soldL.addAll(sold);
soldL.sort(comparator); // use 'List.sort'
编辑 :您可以使用comparingInt
而不是进行比较以避免装箱,例如:
Comparator<Product> comparator = Comparator.comparingInt(p -> p.getCommentList().size());
答案 1 :(得分:1)
您可以通过在Product上实现一个返回列表大小(例如:public int getCommentListSize() { return commentList.size(); }
)的方法来简化比较。
因此您可以通过以下方式创建比较器:
Comparator comparator = Comparator.comparing(Product::getCommentListSize);
然后,将比较器传递给sort方法。