[英]Collecting to HashMap to a LinkedHashMap in Java 8
我正在使用 java 8 個流將 HashMap 轉換為 LinkedHashMap。 我有以下代碼:
final LinkedHashMap<String, Employee> collect = map.entrySet().stream()
.sorted(Comparator.comparing(o -> o.getValue().getName()))
.collect(Collectors.toMap(e -> e.getKey(), v -> v.getValue(), (o, o2) -> o, LinkedHashMap::new));
一切都很清楚,但是 toMap 方法的最后一個參數讓我很困惑。
(o, o2) -> o, LinkedHashMap::new)
據我了解,這是一個 binaryOperator,但我無法理解它是如何工作的以及 'o' 對 o 的含義o, LinkedHashMap::new
誰能幫助我理解它或任何更好的方法來實現這一目標?
(o, o2) -> o
是第三個參數
正如文件所說
@param mergeFunction 合並 function,用於解決 * 與同一鍵關聯的值之間的沖突,如提供給 {@link Map#merge(Object, Object, BiFunction)}
這意味着如果你有沖突,你只保留o
。 您不關心其他沖突的 object o2
。 所以o
和o2
是存在於同一個鍵的 2 個沖突值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.