From 52844c66a8a3e06da5a27130e06ca238d7b6d579 Mon Sep 17 00:00:00 2001 From: xiangwbs Date: Sat, 10 Mar 2018 12:37:03 +0800 Subject: [PATCH] merge --- .../src/main/java/com/xwbing/demo/Ademo.java | 13 +++-- .../main/java/com/xwbing/demo/LambdaDemo.java | 52 +++++++++---------- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/boot-service/src/main/java/com/xwbing/demo/Ademo.java b/boot-service/src/main/java/com/xwbing/demo/Ademo.java index 7047748..f01d232 100644 --- a/boot-service/src/main/java/com/xwbing/demo/Ademo.java +++ b/boot-service/src/main/java/com/xwbing/demo/Ademo.java @@ -2,6 +2,7 @@ package com.xwbing.demo; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * 项目名称: boot-module-demo @@ -12,21 +13,19 @@ import java.util.List; public class Ademo { public static void main(String[] args) { List integers = new ArrayList<>(); - for (int i = 0; i < 1000000; i++) { + for (int i = 0; i < 10; i++) { integers.add(i); } long l = System.currentTimeMillis(); - integers.forEach(integer -> { - int i = integer * 2; - }); + List collect = integers.stream().filter(integer ->integer==2 ).collect(Collectors.toList()); long l1 = System.currentTimeMillis(); System.out.println(l1-l); + System.out.println(collect); long l3 = System.currentTimeMillis(); - integers.parallelStream().forEach(integer -> { - int i = integer * 2; - }); + List collect1 = integers.parallelStream().filter(integer ->integer==2 ).collect(Collectors.toList()); long l4 = System.currentTimeMillis(); System.out.println(l4-l3); + System.out.println(collect1); } } diff --git a/boot-service/src/main/java/com/xwbing/demo/LambdaDemo.java b/boot-service/src/main/java/com/xwbing/demo/LambdaDemo.java index 96983b1..221d96f 100644 --- a/boot-service/src/main/java/com/xwbing/demo/LambdaDemo.java +++ b/boot-service/src/main/java/com/xwbing/demo/LambdaDemo.java @@ -36,50 +36,50 @@ public class LambdaDemo { // Arrays.stream(arrays).forEach(System.out::println); list.forEach(System.out::println);//遍历时:对象,json等引用类型可直接转换 lists.sort(Comparator.comparingInt(o -> o));//升序排序,不需要收集 - System.out.println("sort:" + lists.stream().sorted((o1, o2) -> o2 - o1).collect(Collectors.toList()));//排序 - System.out.println("map:" + lists.stream().map(o1 -> o1 * 2).collect(Collectors.toList()));//转换成新元素 - System.out.println("peak:" + lists.stream().peek(String::valueOf).collect(Collectors.toList()));//生成一个包含原Stream元素的新Stream - System.out.println("distinct:" + lists.stream().distinct().collect(Collectors.toList()));//去重(去重逻辑依赖元素的equals方法) - System.out.println("limit:" + lists.stream().limit(4).collect(Collectors.toList()));//截取 - System.out.println("skip:" + lists.stream().skip(4).collect(Collectors.toList()));//丢弃 + System.out.println("sort:" + lists.parallelStream().sorted((o1, o2) -> o2 - o1).collect(Collectors.toList()));//排序 + System.out.println("map:" + lists.parallelStream().map(o1 -> o1 * 2).collect(Collectors.toList()));//转换成新元素 + System.out.println("peak:" + lists.parallelStream().peek(String::valueOf).collect(Collectors.toList()));//生成一个包含原Stream元素的新Stream + System.out.println("distinct:" + lists.parallelStream().distinct().collect(Collectors.toList()));//去重(去重逻辑依赖元素的equals方法) + System.out.println("limit:" + lists.parallelStream().limit(4).collect(Collectors.toList()));//截取 + System.out.println("skip:" + lists.parallelStream().skip(4).collect(Collectors.toList()));//丢弃 //匹配 - boolean b1 = lists.stream().anyMatch(o -> o == 1); - boolean b = lists.stream().allMatch(o -> o == 1); - boolean b2 = lists.stream().noneMatch(o -> o == 1); + boolean b1 = lists.parallelStream().anyMatch(o -> o == 1); + boolean b = lists.parallelStream().allMatch(o -> o == 1); + boolean b2 = lists.parallelStream().noneMatch(o -> o == 1); //过滤 - System.out.println("filter:" + lists.stream().filter(o1 -> o1 > 3 && o1 < 8).collect(Collectors.toList())); + System.out.println("filter:" + lists.parallelStream().filter(o1 -> o1 > 3 && o1 < 8).collect(Collectors.toList())); Predicate gt = integer -> integer > 3;//函数式接口Predicate Predicate lt = integer -> integer < 8; - System.out.println("重用filter:" + lists.stream().filter(gt.and(lt)).collect(Collectors.toList())); + System.out.println("重用filter:" + lists.parallelStream().filter(gt.and(lt)).collect(Collectors.toList())); //删除 lists.removeIf(item -> item > 3);//根据条件删除,不用收集 //聚合 - System.out.println("reduce:" + lists.stream().reduce((o1, o2) -> o1 + o2).get());//聚合 - System.out.println("reduce:" + lists.stream().reduce(0, (o1, o2) -> o1 + o2));//聚合(给定默认值) - System.out.println("ids:" + list.stream().reduce((sum, item) -> sum + "," + item).get());//常用//list(a,b,c)-->,a,b,c-->a,b,c - System.out.println("ids:" + list.stream().reduce("", (sum, item) -> sum + "," + item).substring(1)); - String s = list.stream().reduce("", (sum, item) -> sum + "'" + item + "',");//list(a,b,c)-->'a','b','c',-->'a','b','c' + System.out.println("reduce:" + lists.parallelStream().reduce((o1, o2) -> o1 + o2).get());//聚合 + System.out.println("reduce:" + lists.parallelStream().reduce(0, (o1, o2) -> o1 + o2));//聚合(给定默认值) + System.out.println("ids:" + list.parallelStream().reduce((sum, item) -> sum + "," + item).get());//常用//list(a,b,c)-->,a,b,c-->a,b,c + System.out.println("ids:" + list.parallelStream().reduce("", (sum, item) -> sum + "," + item).substring(1)); + String s = list.parallelStream().reduce("", (sum, item) -> sum + "'" + item + "',");//list(a,b,c)-->'a','b','c',-->'a','b','c' System.out.println("id in:" + s.substring(0, s.lastIndexOf(","))); //join - System.out.println("join:" + list.stream().collect(Collectors.joining(",")));//list(a,b,c)-->a,b,c + System.out.println("join:" + list.parallelStream().collect(Collectors.joining(",")));//list(a,b,c)-->a,b,c System.out.println("join:" + String.join(",", list)); //统计 - IntSummaryStatistics statistics = lists.stream().mapToInt(x -> x).summaryStatistics(); + IntSummaryStatistics statistics = lists.parallelStream().mapToInt(x -> x).summaryStatistics(); System.out.println("List中最大的数字 : " + statistics.getMax()); System.out.println("List中最小的数字 : " + statistics.getMin()); System.out.println("所有数字的总和 : " + statistics.getSum()); System.out.println("所有数字的平均值 : " + statistics.getAverage()); System.out.println("List成员个数 : " + statistics.getCount()); //all example - System.out.println("all:" + lists.stream().filter(Objects::nonNull).distinct().mapToInt(num -> num * 2).skip(2).limit(4).sum()); + System.out.println("all:" + lists.parallelStream().filter(Objects::nonNull).distinct().mapToInt(num -> num * 2).skip(2).limit(4).sum()); //遍历list存入map里 - Map userMap = listAll().stream().collect(Collectors.toMap(SysUser::getId, Function.identity())); - Map nameMap = listAll().stream().collect(Collectors.toMap(SysUser::getId, SysUser::getName)); - Map jsonMap = getList().stream().collect(Collectors.toMap(o1 -> o1.getString(""), o2 -> o2.getString(""))); + Map userMap = listAll().parallelStream().collect(Collectors.toMap(SysUser::getId, Function.identity())); + Map nameMap = listAll().parallelStream().collect(Collectors.toMap(SysUser::getId, SysUser::getName)); + Map jsonMap = getList().parallelStream().collect(Collectors.toMap(o1 -> o1.getString(""), o2 -> o2.getString(""))); //分组 - Map> groupMap = listAll().stream().collect(Collectors.groupingBy(SysUser::getSex));//(分组条件为key,分组成员为value) + Map> groupMap = listAll().parallelStream().collect(Collectors.groupingBy(SysUser::getSex));//(分组条件为key,分组成员为value) //非空判断 - Optional optional = list.stream().reduce((sum, item) -> sum + "," + item); + Optional optional = list.parallelStream().reduce((sum, item) -> sum + "," + item); String reduce; if (optional.isPresent()) { reduce = optional.get(); @@ -127,9 +127,9 @@ public class LambdaDemo { String admin = isAdmin(sysUser.getId()); return "Y".equals(admin); }; - return listAll().stream().filter(roles).collect(Collectors.toList()); + return listAll().parallelStream().filter(roles).collect(Collectors.toList()); } else {//一步到底 - return listAll().stream().filter(sysUser -> { + return listAll().parallelStream().filter(sysUser -> { String admin = isAdmin(sysUser.getId()); return "Y".equals(admin); }).collect(Collectors.toList());