我决定采取功能性做法,产生一个字符串或随机字符,到目前为止,我想出了这一点,应该执行比拳击更好,然后用StringJoiner
作为收藏家:如何使用Stream API混洗流?
Random random = new Random();
String randomString = IntStream.concat(
random.ints(8, 'a', 'z'),
random.ints(8, 'A', 'Z')
)
.collect(
StringBuilder::new,
(sb, i) -> sb.append((char)i),
(sb1, sb2) -> sb1.append(sb2)
).toString();
我想生成从az或AZ范围的16个字符的流,我遇到的问题是我不知道如何洗牌两个流。
我知道,我使用IntStream.concat
这里,这将只是在连接两个流,我正在寻找以下任一操作:
- 静态运营商像
IntStream.concat
合并流时,做的洗牌。 - 像
sorted()
这样的流操作符。
在我看来,这两种方式都是可行的,但是我特别感兴趣的是如何让运营商如sorted()
。这里的关键是它是一个有状态的运算符,因为它需要在运行之前看到整个流,有没有办法在流序列中注入有状态的运算符?
到目前为止,运营,不包括所需要的工作洗牌他们,似乎在Java 8
它不幸的是摆脱了明确的'''''''和'''''Z''范围。 – skiwi
不一定。看到我更新的答案。 – Holger
这不是洗牌。这允许重复。洗牌意味着保留原始元素,而不是其顺序。 –