所有示例均在gihub(ssh_base)中====>https://github.com/chengyangyang

java8 新特性

 

对java8 新特性的整理

  1.lambdab表达式

  例如:

     //lambda一般只有一行代码
        

     // 相当于ArrayList集合 List<Integer> integers = Arrays.asList(1, 1, 4,5,6,7,8);
  
     //进行遍历 Arrays.asList(1, 1, 4,5,6,7,8).forEach(a -> System.out.println(a));

   //引用类的局部变流量,隐式转化为final,这样效率会更高,这个变量str将不能被改变 String str = ","; //等价于:final String str = ","; Arrays.asList( "a", "b", "c" ).forEach( e -> System.out.print( e + str ) ); //进行排序 List<Integer> list = Arrays.asList(4, 2, 1, 3); list.sort((a1,b1) -> a1.compareTo(b1)); list.forEach(a -> System.out.println(a));

   

  

    List<MyTest2> list = Arrays.asList(
                new MyTest2(5, "a"),
                new MyTest2(12, "b"),
                new MyTest2(11, "b"),
                new MyTest2(8, "c")
        );
     // 计算满足条件的年龄和和 
int b = list.stream().filter(x -> x.getName().equals("b")).mapToInt(MyTest2::getAge).sum();
     // parallel 支持并行处理
    
int b = list.stream().filter(x -> x.getName().equals("b")).parallel().mapToInt(MyTest2::getAge).sum();
   // 另外一种写法 reduce 是提炼 新的值和原来的值进行叠加
  
Integer b = list.stream().filter(x -> x.getName().equals("b")).parallel().map(MyTest2::getAge).reduce(0, Integer::sum);  
     // 进行分组
   Map<String, List<MyTest2>> collect = list.stream().collect(Collectors.groupingBy(MyTest2::getName)); 
    结果:{a=[MyTest2(age=5, name=a)], b=[MyTest2(age=12, name=b), MyTest2(age=11, name=b)], c=[MyTest2(age=8, name=c)]}
     
    // 字符串拼接
    String reduce = list.stream().mapToInt(MyTest2::getAge).mapToObj(x -> x + ",").reduce("", String::concat);
   结果:
5,12,11,8,
  
 
        System.out.println(b);


 

  optional 新增的类库

  可以解决java空指针异常的情况.

 

List<MyTest2> list = Arrays.asList(
new MyTest2(5, "a"),
new MyTest2(12, "b"),
new MyTest2(11, "b"),
new MyTest2(8, "c")
);

int b = list.stream().filter(x -> x.getName().equals("b")).mapToInt(MyTest2::getAge).sum();
System.out.println(b);
posted @ 2018-08-29 09:15  ☞书香门第☜  阅读(107)  评论(0编辑  收藏  举报
http://count.knowsky.com/count1/count.asp?id=434520&sx=1&ys=64"