我決定採取功能性做法,產生一個字符串或隨機字符,到目前爲止,我想出了這一點,應該執行比拳擊更好,然後用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
這不是洗牌。這允許重複。洗牌意味着保留原始元素,而不是其順序。 –