Java 需要访问多个方法才能比较对象

Java 需要访问多个方法才能比较对象,java,list,arraylist,lambda,comparator,Java,List,Arraylist,Lambda,Comparator,在阅读了Oracle文档之后,我没有找到我要找的内容。我有一个对象,它可以以不同的方式进行比较,但它的属性之一是列表。如何根据列表属性的大小进行比较 Comparator comparator = Comparator.comparing(Product::getCommentList::size); List<Product> soldL = new LinkedList(); soldL.addAll(sold); Collections.sort(soldL,comparato

在阅读了Oracle文档之后,我没有找到我要找的内容。我有一个对象,它可以以不同的方式进行比较,但它的属性之一是列表。如何根据列表属性的大小进行比较

Comparator comparator = Comparator.comparing(Product::getCommentList::size);
List<Product> soldL = new LinkedList();
soldL.addAll(sold);
Collections.sort(soldL,comparator);
Comparator Comparator=Comparator.comparating(Product::getCommentList::size);
List soldL=new LinkedList();
soldL.addAll(已售出);
Collections.sort(soldL,comparator);

我尝试了上面的代码,但没有成功。

您可以通过在产品上实现一个返回列表大小的方法来简化比较(例如:
public int getCommentListSize(){return commentList.size();}

因此,您可以通过以下方式创建比较器:

Comparator comparator = Comparator.comparing(Product::getCommentListSize);

然后,将comparator传递给sort方法。

您可以简单地使用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'

可以使用
比较器.comparingit
来避免额外的装箱
Comparator<Product> comparator = Comparator.comparingInt(p -> p.getCommentList().size());