首页 > 技术文章 > java8新特性

liuxuelin 2018-12-11 20:10 原文

Lambda表达式:
    Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
    格式:
        (parameters) -> expression
        或
        (parameters) ->{ statements; }
        
    主要作用:用于替代匿名内部类,即可以表示一个接口的实现类。
    
    条件:Lambda表达式要表示的接口,必须只有一个要实现的方法
    
    表达式说明:
        parameters:传入的参数
        expression:可以看成是接口中方法的实现,可以使用parameters中的参数
    
    如:
        // 1.1使用匿名内部类  
        new Thread(new Runnable() {  
            @Override  
            public void run() {  
                System.out.println("Hello world !");  
            }  
        }).start();  
          
        // 1.2使用 lambda expression  
        new Thread(() -> System.out.println("Hello world !")).start();  
        
        
        
方法引用:
    方法引用是指通过方法的名字来指向一个方法。通过使用一对冒号实现:“::”
    
    
    
    
    
默认方法:
    Java 8 新增了接口的默认方法。简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。
    我们只需在方法名前面加个default关键字即可实现默认方法。
    
    
Java 8 Stream
    Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),
    或者大批量数据操作 (bulk data operation)。
    
    1)构造流:
        // 1. Individual values
        Stream stream = Stream.of("a", "b", "c");
        // 2. Arrays
        String [] strArray = new String[] {"a", "b", "c"};
        stream = Stream.of(strArray);
        stream = Arrays.stream(strArray);
        // 3. Collections
        List<String> list = Arrays.asList(strArray);
        stream = list.stream();
    
    2)Stream方法:
        foreach()  用于遍历集合中每一个元素,并可以对每一个元素进行操作
            list.stream().forEach(s-> System.out.println(s));
            
        filter()    留下满足条件的元素,过滤掉不满足条件的元素
            list.stream().filter(s -> !s.isEmpty())    //过滤掉为空的元素
        
        map()        将流中的每一个元素映射为指定的元素
            list.stream().map(n -> n * n).    //将集合中所有的元素转换为大写
        
        limit()        限定从流中获取元素的个数
        sorted()    排序
        
    
    
    
    
    
    

 

推荐阅读