Вы также можете использовать call_user_func_array()
. Он позволяет передавать массив параметров в качестве второго параметра, поэтому вам не нужно точно знать, сколько переменных вы передаете.
Вы можете просто использовать лямбду и улучшить свой существующий код следующим образом:
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());
Вы можете упростить сравнение, применив метод Product, который возвращает размер списка (например: public int getCommentListSize() { return commentList.size(); }
).
Таким образом, вы можете создать компаратор следующим образом:
Comparator comparator = Comparator.comparing(Product::getCommentListSize);
После этого вы передаете компаратор в метод сортировки.