2017-08-25 79 views
4
Map<String, Map<String, String>> myValues; 

myValues.entrySet().stream.collect(
    Collectors.toMap(entry -> getActualKey(entry.getKey()), 
        entry -> doCalculation(entry.getValue())) 
        ); 

有沒有一種方法可以讓我在doCalculation功能中獲得鑰匙?我知道我可以再次將getActualKey(entry.getKey())作爲參數進行計算,但我不想重複相同的功能兩次。獲取鑰匙在收藏家.to地圖

回答

4

您可以將您的條目映射到你的派生密鑰新的中間項,然後傳遞值對doCalculation()

myValues.entrySet() 
    .stream() 
    .map(e -> new SimpleEntry<>(getActualKey(e.getKey()), e.getValue())) 
    .collect(Collectors.toMap(e -> e.getKey(), e -> doCalculation(e.getKey(), e.getValue())));