1. 程式人生 > 程式設計 >java8 forEach結合Lambda表示式遍歷 List操作

java8 forEach結合Lambda表示式遍歷 List操作

我就廢話不多說了,大家還是直接看程式碼吧~

 @Test
 void testJava8ForeachMap() {
 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);
 
 //普通方式遍歷Map
 for(Map.Entry<String,Integer> entry:items.entrySet()){
  System.out.println(entry.getKey()+":"+entry.getValue());
 }
 
 System.out.println("===================");
 
 //java8 foreach + 拉姆達表示式遍歷Map
 items.forEach((k,v) -> {
  System.out.println(k+":"+v);
 }); 
 } 
 
 @Test
 void testJava8ForeachList() {
 List<String> items = new ArrayList<>();
 items.add("A");
 items.add("B");
 items.add("C");
 items.add("D");
 items.add("E");
 
 //普通寫法遍歷List
 for (String item:items){
  System.out.println(item);
 }
 
 System.out.println("單獨的 forEach 寫法==========");
 
 //單獨的 forEach 寫法
 Consumer consumer = new Consumer<String>() {
  @Override
  public void accept(String s) {
  System.out.println(s);
  }
 };
 items.forEach(consumer);
 
 System.out.println("forEach結合Lambda寫法==========");
 //輸出 A,B,C,D,E
 items.forEach(s -> {
  System.out.println(s);
 });
 
 System.out.println("forEach結合Lambda寫法,新增過濾條件==========");
 //輸出 C
 items.forEach((s) -> {
  if("C".equals(s)){
  System.out.println(s);
  }
 });
 }

補充知識:java8 lambda表示式之map和foreach的區別

看 一段程式碼:

List<String> list = new ArrayList<>();
list.add("a");
list.add("c");
list.add("s");
list.add("b");
list.add("f");
list.forEach(s -> {
 System.out.println(args.getClass().getTypeName());
});

輸出結果:

java.lang.String[]
java.lang.String[]
java.lang.String[]
java.lang.String[]
java.lang.String[]

再看map操作符

List<String> list = new ArrayList<>();
 list.add("1");
 list.add("2");
 list.add("3");
 list.add("4");
 list.add("5");

List<Integer> list1 = list.stream().map(s -> {
 Integer a = Integer.parseInt(s);
 a = a+1;
 System.out.println(a.getClass().getTypeName());
 return a;
 }).collect(Collectors.toList());
 System.out.println(list);
 System.out.println(list1);

輸出結果:

java.lang.Integer
java.lang.Integer
java.lang.Integer
java.lang.Integer
java.lang.Integer
[1,2,3,4,5]
[2,5,6]

map對原來的集合操作後返回一個新的集合。此集合和原集合無任何關係,且不會改變原集合的任何東西

foreach操作的是原集合,返回的還是原集合

以上這篇java8 forEach結合Lambda表示式遍歷 List操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。