我试图将数组中的两个连续元素连接起来。我可以迭代地这样做,但是我正在尝试学习java流,并且认为这将是一个很好的练习。
如果我有一个字符串数组: 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"]
感谢您的帮助!
3条答案
按热度按时间of1yzvn41#
你差点就到了。你已经有一对了,现在你所要做的就是在中间用“-”把它们打成一根绳子。
试一试:
brc7rcf02#
实现此输出的简单方法是:
l5tcr1uw3#
collectors.groupingby有一个重载方法,您可以将结果传递给下游收集器。事实上,默认情况下,它使用了tolist收集器,所以您得到了list。可以使用joiningby连接字符串。
结果是
代码