11
我有一個Set<String> usernames
和List<Player> players
的Java 8拉姆達 - 過濾器收集的另一個集合
我想過濾掉那些沒有設置玩家。
我知道如何在香草前的Java 8
List<Player> distinctPlayers = new ArrayList<Player>();
for(Player p : players) {
if(!usernames.contains(p.getUsername()) distinctPlayers.add(p);
}
我試圖寫一個Lambda表達式這個簡單的代碼做到這一點,但我努力讓usernames.contains()
在過濾器工作
players.stream().filter(!usernames.contains(p -> p.getUsername()))
.collect(Collectors.toList());
這不會編譯。 「」無法移動方法getUsername()「
Bull!!我知道我錯過了一些簡單的東西。謝謝! #feelsAshamed – 2014-10-02 21:58:03
不錯!謝謝!〜 – 2016-04-25 19:40:41
嗨,我正在使用excact方案,但它顯示編譯錯誤「局部變量」用戶名「在一個封閉範圍內定義必須是最終的或有效的最終」 – 2016-08-31 14:36:52