java8 lambda 表达式 常用语法总结

toList  List
    
把流中所有元素收集到List中
示例:List

menus=Menu.getMenus.stream().collect(Collectors.toList())


Joining  String
    
连接流中每个元素的toString方法生成的字符串
示例:String name=Menu.getMenus.stream().map(Menu::getName).collect(joining(“, ”))


maxBy  Optional
    

一个包裹了流中按照给定比较器选出的最大元素的optional
如果为空返回的是Optional.empty()

示例:Optional

fattest=Menu.getMenus.stream().collect(maxBy(Menu::getCalories))


groupingBy  Map>
    
根据流中元素的某个值对流中的元素进行分组,并将属性值做为结果map的键
Map> resultMap = personList.stream().collect(Collectors.groupingBy(c -> c.getAddress()));

filter 过滤
List filterList = appleList.stream().filter(a -> a.getName().equals("香蕉")).collect(Collectors.toList());

mapreduce 求和
BigDecimal totalMoney = appleList.stream().map(Apple::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);

Collectors.maxBy 求最大最小值
Optional maxDish = Dish.menu.stream().
      collect(Collectors.maxBy(Comparator.comparing(Dish::getCalories)));
maxDish.ifPresent(System.out::println);


去重
     List unique = appleList.stream().collect(
                collectingAndThen(
                        toCollection(() -> new TreeSet<>(comparingLong(Apple::getId))), ArrayList::new)
        );

distinct去重(List中的Color对象去重,记得重写hashCode()与equeals()方法。)
List colors = skusResult.getValue().stream().map(Sku::getColor).distinct().collect(Collectors.toList());

anyMatch 是否存在
boolean match = gaPaymentChangeDetailList.stream().anyMatch(detail -> GaConstants.SUPPLEMENT_BILL.equals(detail.getIsSupplementBill()));

foreach 遍历对象
page.getRows().stream().forEach(x -> x.setOrderTime((DateUtils.dateFormat(x.getCreateTime(),DateUtils.DAT_SHORT_FORMATSS))));

List 对象转换
List

menus= menuService.queryMenuList(query);List menuTrees = menus.stream().map(MenuTreeVO::new).collect(Collectors.toList());
把List转成了 List,其中的map(MenuTreeVO::new)等价于map(menu->new MenuTreeVO(menu))

collections排序

//之前的排序我们可以这样写
    Collections.sort(list, new Comparator(){
    @Override
    public int compare(String o1, String o2) {
    return -o1.compareTo(o2);
    }
    });

    //使用Lambda表达式
    Collections.sort(list,(String s1,String s2)->{
    return s1.compareTo(s2);
    });

 

 //可以简写为  
 //1.大括号里面就一句代码  
//2.编译器可以自动推导出参数类型  
Collections.sort(list,(s1,s2)->s1.compareTo(s2));

你可能感兴趣的:(java8 lambda 表达式 常用语法总结)