【发布时间】:2020-09-04 00:54:23
【问题描述】:
我正在尝试连接数组中的两个连续元素。我可以迭代地执行此操作,但我正在尝试学习 Java Streams,并认为这将是一个很好的练习。
如果我有一个字符串数组:
String exampleArray[] = ["a1", "junk", "a2", "b1", "junk", "b2", "c1", "junk", "junk", "junk", "c2", "d1", "junk", "d2", "junk-n"]
我想得到:
["a1 - a2", "b1 - b2", "c1 - c2", "d1 - d2"] 作为输出。
我试过了:
Arrays.asList(exampleArray)
.stream()
.filter(s -> s.length() > 0) // gets rid of blanks
.filter(s -> !s.contains("junk"))
.collect(Collectors.groupingBy(it -> counter.getAndIncrement() / 2))
.values();
这会返回一个Collection<List<String>>,比如[ [a1, a2], [b1, b2], [c1, c2], [d1, d2] ]
但我不知道怎么去:["a1 - a2", "b1 - b2", "c1 - c2", "d1 - d2"]
感谢任何帮助!
【问题讨论】:
-
为什么不是
groupBy字符串的第一个字符?你怎么除以2后还有这么多组? -
我的数据没有 'a1', 'a2' - 这只是一个例子
标签: java java-stream concatenation