调用对象方法并使用函数api返回相同的对象

Art*_*ūrs 3 java java-8 java-stream

目前我有:

cardLabels = cards.stream()
            .map(ImageSupplier::getCard)
            .map(JLabel::new)
            .collect(toList());

cardLabels.stream().forEach(container::add);
Run Code Online (Sandbox Code Playgroud)

我可以写lambda表达式:

.map(c ->{ 
  JLabel label = new JLabel(c);
  container.add(label);
  return label;
 })
Run Code Online (Sandbox Code Playgroud)

但似乎很长.有什么东西我可以调用就像.doStuff(container::add)返回流JLabel吗?

Rad*_*def 5

也许您正在寻找peek:

return cards.stream()
            .map(ImageSupplier::getCard)
            .map(JLabel::new)
            .peek(container::add);
Run Code Online (Sandbox Code Playgroud)

返回由此流的元素组成的流,此外还在从结果流中消耗元素时对每个元素执行提供的操作.

这是一个中间操作.