Java 8 Map
的forEach()
用法如下。
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("matt", 70);
map.put("john", 80);
map.put("gary", 90);
// 使用for-each loop
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
// 使用Java 8 forEach()
map.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String k, Integer v) {
System.out.println(k + ":" + v);
}
});
// 使用Java 8 forEach() 搭配 Lambda語法
map.forEach((k, v) -> System.out.println(k + ":" + v));
}
}
上面範例中每個loop的結果都相同。
在Java 8的Map
介面新增了forEach()
方法,接收的參數為BiConsumer
介面的實作,而BiConsumer
是只有一個抽象方法(accept(T t, U u)
)的Functional Interface,所以可以用Lambda語法改寫。
如果覺得文章有幫助的話還幫忙點個Google廣告,感恩。
2 則留言:
不知道lambda的"forEach" or "map" 裡有沒有辦法在做多條陳述式?
像是Collection.map{ k -> k.setA; k.setB; k.setC ....}
原本的API是無法這樣做。
此外能舉例想要在forEach()或map()執行多條陳述式的情境嗎?
張貼留言