HashSet::add 如何被接受为 ObjectIntConsumer?

How can HashSet::add be accepted as an ObjectIntConsumer?

似乎下一行是在 Java 中收集整数流的有效实现:

IntStream.range(1, 100)
    .collect(HashSet::new, HashSet::add, HashSet::addAll);

但是当我考虑到 IntStream class 中的 collect 方法签名时

collect(Supplier<R> supplier,
 ObjIntConsumer<R> accumulator,
 BiConsumer<R, R> combiner)

,我不明白如何将 HashSet::add 传递给 collect 方法,其中需要 ObjIntConsumer,因为 ObjIntConsumer 需要两个参数

void accept(T t, int value);

,但是 HashSet::add 只接受一个参数!

您的代码中 HashSet::add 的等效 lambda 表达式是:

(HashSet<Integer> t, int value) -> t.add(value)

换句话说,ObjIntConsumer 正在接受容器(在本例中为 HashSet)和要添加到该容器的值。