Lambda 表达式

用lambda表达式实现Runnable

// Java 8之前:
new Thread(new Runnable() {
    @Override
    public void run() {
    System.out.println("Before Java8, too much code for too little to do");
    }
}).start();

//Java 8方式:
new Thread( () -> System.out.println("In Java8, Lambda expression rocks !!") ).start();
使用lambda表达式对列表进行迭代
// Java 8之前:
List features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API");
for (String feature : features) {
    System.out.println(feature);
}
// Java 8之后:
List features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API");
features.forEach(n -> System.out.println(n));

// 使用Java 8的方法引用更方便,方法引用由::双冒号操作符标示,
// 看起来像C++的作用域解析运算符
features.forEach(System.out::println);

通过过滤创建一个String列表
List<String> filtered = strList.stream().filter(x -> x.length()> 2).collect(Collectors.toList());

// 将字符串换成大写并用逗号链接起来
List<String> G7 = Arrays.asList("USA", "Japan", "France", "Germany", "Italy", "U.K.","Canada");
String G7Countries = G7.stream().map(x -> x.toUpperCase()).collect(Collectors.joining(", "));
System.out.println(G7Countries);

// 用所有不同的数字创建一个正方形列表
List<Integer> numbers = Arrays.asList(9, 10, 3, 4, 7, 3, 4);
List<Integer> distinct = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());
System.out.printf("Original List : %s,  Square Without duplicates : %s %n", numbers, distinct);

//获取数字的个数、最小值、最大值、总和以及平均值
List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29);
IntSummaryStatistics stats = primes.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("Highest prime number in List : " + stats.getMax());
System.out.println("Lowest prime number in List : " + stats.getMin());
System.out.println("Sum of all prime numbers : " + stats.getSum());
System.out.println("Average of all prime numbers : " + stats.getAverage());
排序
List<Integer> list= Arrays.asList(1,4,7,6,2,3,5);
//jdk1.8之前排序
倒序
Collections.sort(list,new Comparator<Integer>(){
    public int compare(Integer o1, Integer o2) {
        return -o1.compareTo(o2);
    }
});

//使用Lambda表达式排序
倒序
Collections.sort(list,(Integer o1,Integer o2)->{
    return -o1.compareTo(o2);
});

//可以简写为
顺序
Collections.sort(list,(Integer o1,Integer o2)->o1.compareTo(o2));

数组排序,用法同上
Int num[]={1,4,5,2,3};

//Lambda表达式排序
Arrays.sort(a);//{1,2,3,4,5}
Map函数
public static void main(String[] args) {
    List<String> _names = Arrays.asList("Bob", "Tom", "Jeff", "Scott",
        "Jennifer", "Steve");

    List<String> greetings = _names.stream().map(name -> "Hello " + name)
        .collect(Collectors.toList());
    System.out.println(greetings);。//打印整个list集合
   greetings.forEach(System.out::println); //遍历输出集合中每个元素
  }
//运行结果[Hello Bob, Hello Tom, Hello Jeff, Hello Scott, Hello Jennifer, Hello Steve]
Stream流
List<Integer> nums = Lists.newArrayList(1,1,null,2,3,4,null,5,6,7,8,9,10);
System.out.println("求和:"+nums
.stream()//转成Stream
.filter(team -> team!=null)//过滤
.distinct()//去重
.mapToInt(num->num*2)//map操作
.skip(2)//跳过前2个元素
.limit(4)//限制取前4个元素
.peek(System.out::println)//流式处理对象函数
.sum());//

 

posted @ 2019-07-04 09:26  JasminumFei  阅读(166)  评论(0)    收藏  举报