java8 lambda表达式之map和foreach的区别

看 一段代码:

List 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 list = new ArrayList<>();
  list.add("1");
  list.add("2");
  list.add("3");
  list.add("4");
  list.add("5");

List 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操作的是原集合,返回的还是原集合

你可能感兴趣的:(java8 lambda表达式之map和foreach的区别)