我想将一个字符串流转换成一个单词对流,例如:
我有:
这与在Zipping streams using JDK8 with lambda (java.util.stream.Streams.zip)中概述的“压缩”几乎相同。
但是,这会产生:
我有:
{ "A", "Apple", "B", "Banana", "C", "Carrot" }
我希望得到:{ ("A", "Apple"), ("Apple", "B"), ("B", "Banana"), ("Banana", "C") }
。这与在Zipping streams using JDK8 with lambda (java.util.stream.Streams.zip)中概述的“压缩”几乎相同。
但是,这会产生:
{ (A, Apple), (B, Banana), (C, Carrot) }
以下代码可以工作,但明显不是正确的方式(不是线程安全等等):static String buffered = null;
static void output(String s) {
String result = null;
if (buffered != null) {
result = buffered + "," + s;
} else {
result = null;
}
buffered = s;
System.out.println(result);
}
// *****
Stream<String> testing = Stream.of("A", "Apple", "B", "Banana", "C", "Carrot");
testing.forEach(s -> {output(s);});
zip(stream, stream[1:])
(这是Python,但思路相同:创建一个跳过第一个项的第二个流,stream.skip(1)
应该可以)。 - njzk2