Java中forEach使用lambda表達式,數組和集合的區別說明
1.數組怎麼使用lambda
數組不能直接在forEach中使用lambda表達式
PartnerType[] values = PartnerType.values(); //提示Cannot resolve method 'forEach(<method reference>) values.forEach(System.out::println);//錯誤使用
想要使用必須轉換,如下
(1)轉成list
(2)轉成steam
PartnerType[] values = PartnerType.values(); Arrays.stream(values).forEach(System.out::println);//轉成流 Arrays.asList(values).forEach(System.out::println);//轉成list
2.集合怎麼使用lambda
(1)list在forEach中使用lambda
ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("a"); arrayList.add("b"); arrayList.add("c"); arrayList.forEach(System.out::println);
(2)map在forEach中使用lambda
HashMap<String, Integer> hashMap = new HashMap<>(); hashMap.put("a",1); hashMap.put("b",2); hashMap.put("c",3); hashMap.put("d",4); hashMap.forEach((k,v)->System.out.println(k+"_"+v.intValue()));
Java8 forEach+Lambda表達式
1. forEach and Map
1.1 通常這樣遍歷一個Map
Map<String, Integer> items = new HashMap<>(); items.put("A", 10); items.put("B", 20); items.put("C", 30); items.put("D", 40); items.put("E", 50); items.put("F", 60); for (Map.Entry<String, Integer> entry : items.entrySet()) { System.out.println("Item : " + entry.getKey() + " Count : " + entry.getValue()); }
1.2 在java8中你可以使用 foreach + 拉姆達表達式遍歷
Map<String, Integer> items = new HashMap<>(); items.put("A", 10); items.put("B", 20); items.put("C", 30); items.put("D", 40); items.put("E", 50); items.put("F", 60); items.forEach((k,v)->System.out.println("Item : " + k + " Count : " + v)); items.forEach((k,v)->{ System.out.println("Item : " + k + " Count : " + v); if("E".equals(k)){ System.out.println("Hello E"); } });
2. forEach and List
2.1通常這樣遍歷一個List.
List<String> items = new ArrayList<>(); items.add("A"); items.add("B"); items.add("C"); items.add("D"); items.add("E"); for(String item : items){ System.out.println(item); }
2.2在java8中你可以使用 foreach + 拉姆達表達式 或者 method reference(方法引用)
List<String> items = new ArrayList<>(); items.add("A"); items.add("B"); items.add("C"); items.add("D"); items.add("E"); //lambda //Output : A,B,C,D,E items.forEach(item->System.out.println(item)); //Output : C items.forEach(item->{ if("C".equals(item)){ System.out.println(item); } }); //method reference //Output : A,B,C,D,E items.forEach(System.out::println); //Stream and filter //Output : B items.stream() .filter(s->s.contains("B")) .forEach(System.out::println);
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Java8中forEach語句循環一個List和Map
- java中lambda(函數式編程)一行解決foreach循環問題
- 一篇文章帶你瞭解Java Stream流
- Java中Map接口使用以及有關集合的面試知識點匯總
- java中HashMap的7種遍歷方式與性能分析