distinct方法应使用一个空列表作为标识来调用reduce方法。如何使用累加器检查新列表中是否已存在旧列表的值。
@Override
public <R> R reduce(R identity, BiFunction<R, ? super E, R> accumulator) {
for (E value : this) {
identity = accumulator.apply(identity, value);
}
return identity;
}
@Override
public List<E> distinct() {
List<E> list = new LinkedList<E>();
return reduce(list, (a, b) -> );
}
答案 0 :(得分:3)
您应使用contains
检查列表中是否有元素。如果是这样,请勿将其添加到累加器中,否则,请执行添加它。
return reduce(list, (acc, element) -> {
if (!acc.contains(element)) {
acc.add(element);
}
return acc;
});