看 一段代码:
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, 3, 4, 5, 6]
map对原来的集合操作后返回一个新的集合。此集合和原集合无任何关系,且不会改变原集合的任何东西
foreach操作的是原集合,返回的还是原集合