1

简单地说,下面的代码产生了一个五行的流,我需要将这些行连接成一行(在流式传输时)以供进一步使用和收集它们之前。代码即将将字符串转换为一个长二进制字符串

Stream<String> binText = "hello".chars()
    .mapToObj(x-> Integer.toBinaryString(x))
    .map(x-> String.format("%8s", x).replaceAll(" ", "0"));

我对“Stream API”这个术语有点陌生,所以任何建议都将不胜感激。

更新:假设我想将上述代码中的流映射到int []of 中01实际上,我尝试了下面的代码,它工作正常,但似乎效率不高,需要规范化

int [] binText = "hello".chars()
                     .mapToObj(x-> Integer.toBinaryString(x))
                     .map(x-> String.format("%8s", x).replaceAll(" ", "0"))
                     .flatMap(s-> Stream.of(s.split("")))
                     .mapToInt(Integer::parseInt)
                     .toArray();   

不是吗?

4

1 回答 1

1

您正在寻找的是加入这些字符串的收集器,您将拥有

.collect(Collectors.joining())

最终完整的解决方案可能是:

String binText = "hello".chars()
        .mapToObj(Integer::toBinaryString)
        .map(x-> String.format("%8s", x).replace(" ", "0"))
        .collect(Collectors.joining());
于 2020-10-15T17:04:27.300 回答