2017-04-18 84 views
0

在Java中, 我需要創建一個地圖,看起來像這樣:如何從元組(或類似的東西)構造一個嵌套的地圖?

(爲了清楚起見,說這是用戶名的地圖位置,以布爾一)

Map<String, Map<String, Boolean>> someMap = 
    usernameStream.stream(). 
    .flatMap(username -> locations.stream().map(
      loc -> getSomeBooleanFromInfo(username, loc)) 
    .// somehow make this into a nested map? 

我試過toMap和我知道groupingBy,但由於某種原因,我不能將它嵌套,因爲我設置的方式只是返回一個布爾值流...

任何關於如何重構這個的建議,以便我可以正確映射它們嗎?

回答

0
private static boolean getSomeBooleanFromInfo(String username, String loc) { 
    return true; 
} 

public static void main(String[] args) { 
    List<String> usernames = new ArrayList<>(); 
    List<String> locations = new ArrayList<>(); 
    Map<String, Map<String, Boolean>> someMap = usernames.stream() 
      .collect(Collectors.toMap(
        Function.identity(), 
        username -> locMap(username, locations)) 
      ); 
} 

private static Map<String, Boolean> locMap(String username, List<String> locations) { 
    return locations.stream().collect(Collectors.toMap(
      Function.identity(), 
      loc -> getSomeBooleanFromInfo(username, loc) 
    )); 
} 

我想,該位置是字符串以及用戶名。

相關問題