1.Lambda表达式
a.适用范围:只有一个抽象方法的函数式接口
b.函数式接口注解:@FunctionalInterface(编译时若该接口不符合函数式接口,会提示异常)
c.使用:
1)创建函数式接口
@FunctionalInterface public interface Increase { public int increase(int num); }
2)使用
public static void main(String[] args) { //一行执行语句 Increase increase = (num) -> num + 1; System.out.println(increase.increase(1)); //多行执行语句 increase = (num) -> { num = num + 1; return num; }; System.out.println(increase.increase(3)); }
2.Stream流
a.使用
List<TestBean> beanList = new ArrayList<>(); TestBean goods = new TestBean(); goods.setCode(10); beanList.add(goods); for (int i = 20; i >= 0; i--) { goods = new TestBean(); goods.setCode(i); beanList.add(goods); } goods = null; beanList.add(goods); //流操作 List<Integer> resultList = beanList.stream() //生成流 .filter((bean) -> bean != null) //过滤 // .map((bean) -> bean.getCode()) .map(TestBean::getCode) //映射每个元素到对应的结果 .distinct() //去重 .sorted() //排序 .skip(5) //跳过5个 .limit(10) //取10个 .collect(Collectors.toList()); //将流转换成集合 //合并字符串 String resultString = resultList.stream().map((code) -> String.valueOf(code)).collect(Collectors.joining(", ")); System.out.println(resultString); //循环 // resultList.forEach((code) -> System.out.println(code)); resultList.forEach(System.out::println);
原文:https://www.cnblogs.com/vettel0329/p/11727346.html