我有以下代碼將 a 決議Spliterator<Map.Entry>為 a Map:
Spliterator<Map.Entry<String, String>> spliterator = ///;
Map<String, String> myMap = (StreamSupport
.stream(spliterator, false)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
我想更改代碼,例如在 my 中myMap,每個鍵都與一個常量字串連接。類似的東西:
Spliterator<Map.Entry<String, String>> spliterator = ///;
String myString = "hello";
String separator = "_";
Map<String, String> myMap = (StreamSupport
.stream(spliterator, false)
.collect(Collectors.toMap(myString separator Map.Entry::getKey, Map.Entry::getValue)));
我理解為什么這不起作用,但我找不到這樣做的好方法(沒有myMap在流之后迭代)。我不熟悉 Java 中的 Streams,所以我可能錯過了一些明顯的東西。
uj5u.com熱心網友回復:
您不能使用myString separator Map.Entry::getKey,因為Map.Entry::getKey不是字串而是方法參考。您應該改用 lambda:
entry -> myString separator entry.getKey()
uj5u.com熱心網友回復:
使用顯式 lambda 函式而不是方法參考:
.collect(toMap(
e -> myString separator e.getKey(),
Map.Entry::getValue
))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/466526.html
