Необходим доступ к нескольким методам для сравнения объектов

Вы также можете использовать call_user_func_array() . Он позволяет передавать массив параметров в качестве второго параметра, поэтому вам не нужно точно знать, сколько переменных вы передаете.

2
задан Naman 17 January 2019 в 01:25
поделиться

2 ответа

Вы можете просто использовать лямбду и улучшить свой существующий код следующим образом:

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()); 
0
ответ дан Naman 17 January 2019 в 01:25
поделиться

Вы можете упростить сравнение, применив метод Product, который возвращает размер списка (например: public int getCommentListSize() { return commentList.size(); }).

Таким образом, вы можете создать компаратор следующим образом:

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

После этого вы передаете компаратор в метод сортировки.

0
ответ дан Natanael Veloso 17 January 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: