I want to take a stream of strings and turn it into a stream of word pairs. eg:
I have: { "A", "Apple", "B", "Banana", "C", "Carrot" }
I want: { ("A", "Apple"), ("Apple", "B"), ("B", "Banana"), ("Banana", "C") }
.
This is nearly the same as Zipping, as outlined at Zipping streams using JDK8 with lambda (java.util.stream.Streams.zip)
However, that produces:
{ (A, Apple), (B, Banana), (C, Carrot) }
The following code works, but is clearly the wrong way to do it (not thread safe etc etc):
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);});