我习惯于在 Scala 中编程,但我必须编写一些 Java,并且我正在尝试执行以下 Scala 代码段的等效操作:
trait Options[K, V] {
def add(key: K , value: V): Options[K, V]
}
val options: Options[T, U] = ???
val elems: List[(T, U)] = ???
elems.foldLeft(options) {
case (opts, (key, value)) => opts.add(key, value)
}
Run Code Online (Sandbox Code Playgroud)
也就是说,我在elemsinside折叠元素options,在每一步生成一个新实例。
我尝试使用 Java 的Stream#reduce:
interface Options<K, V> {
Options<K, V> add(K key, V value);
}
Options<K, V> options = ???
Stream<Tuple2<K, V>> elems = ??? // This is Reactor's Tuple2
elems.reduce(options, (opts, opt) …Run Code Online (Sandbox Code Playgroud)