2015-08-28 78 views
-2

如何使用Java 8 Stream API重構此代碼?如何迭代使用java 8流的集合的集合?

for (Role role: user.getRoles()) { 
    for (Privilege privilege: role.getPrivileges()) { 
     System.out.println(privilege.getName()); 
    } 
} 

我想:

user.getRoles().stream() 
       .map(role -> role.getPrivileges()) 
       .forEach(privelege -> System.out.println(privelege.getName())); 
+0

你有什麼已經嘗試過的代碼? – Alex

+0

更正,謝謝。 –

+0

在這種情況下,一個無流的'user.getRoles()。forEach(role - > role.getPrivileges()。forEach(p - > System.out.println(p.getName()));'會做爲好。 – Holger

回答

1

您可以結合.flatMap.map

user.getRoles() 
    .stream() 
    .flatMap(role -> role.getPrivileges().stream()) 
    .map(Privilege::getName) 
    .forEach(System.out::println)