#optaplanner
#optaplanner
Вопрос:
Примеры в документах о ConstraintCollectors
‘ count()
и countDistinct()
не совсем понятны:
ConstraintCollectors.count(…)
Подсчитывает все элементы в группе.ConstraintCollectors.countDistinct(…)
Подсчитывает любой элемент в группе один раз, независимо от того, сколько раз это происходит.
Я не вижу разницы между ними. В сочетании с groupBy()
, разве оба они не возвращают BiConstraintStream<A, Integer>
кортежи, представляющие группы A
, и соответствующее им количество?
Ответ №1:
В этом методе отсутствуют javadocs и некоторые примеры: https://issues.redhat.com/browse/PLANNER-2241
подсчет:
from([
Person("Ann", "Cole", 20),
Person("Beth", "Cole", 20),
Person("Carl", "Cole", 22),
Person("Dan", "Jones", 20)
]).groupBy(Person::getLastName, count())
returns [{"Cole", 3}, {"Jones", 1}]
countDistinct:
from([
Person("Ann", "Cole", 20),
Person("Beth", "Cole", 20),
Person("Carl", "Cole", 30),
Person("Dan", "Jones", 20)
]).groupBy(Person::getLastName, countDistinct(Person::getAge))
returns [{"Cole", 2}, {"Jones", 1}]
Эти примеры проясняют разницу?