Lambada表达式
简化接口编程方式
是匿名内部类的简化书写方式
//把new Runnable()这个对象当做参数Thread thread = new Thread(new Runnable(){//重写run方法public void run(){sout(“匿名内部类写法”);}});thread.star();
lambada表达式简化
把 ( ) -> { } 作为参数
Thread thread = new Thread(()->{sout("lambada表达式写法");});thread.star();
进一步简化
new Thread(()->{sout("lambada表达式写法");}).star();
Stream流
干掉for循环和迭代器遍历
数据源、数据处理、收集结果
//Stream流//1.数据源(在集合中筛选出年龄大于21,切薪资大于2000的人)Predicate<User> pre1= user -> user.getAge() < 21;Predicate<User> pre2= user -> user.getSalary() > 2000;List<User> collect = list.stream().filter(pre1)//过滤条件1.filter(pre2).collect(Collectors.toList());//将收集到的数据放入新的集合System.out.println(collect);
也可以简化为
List<User> collect = list.stream().filter(user.getAge() < 21)//过滤条件1.filter(user.getSalary() > 2000).collect(Collectors.toList());//将收集到的数据放入新的集合System.out.println(collect);
或者
Predicate<User> pre1= user -> user.getAge() < 21Predicate<User> pre2= user -> user.getSalary() > 2000List<User> collect = list.stream().filter(pre1.and(pre2)) //如果是或关系,可以吧and改为or.collect(Collectors.toList());//将收集到的数据放入新的集合System.out.println(collect);
filter筛选
filter得到的结果是一个集合
List<String> list = Arrays.asList("hello","world","java");list.stream().filter( str -> str.length()>=5 ) //将长度大于,等于5的字符串过滤,放进str集合,并遍历.forEach(str -> sout(str));
lilimit截取
// 截取list集合的前两个字符串,放进str集合遍历输出list.stream().limit(2).forEach(str -> sout(str));
sorted排序
List<Integer> list = Array.asList(1,5,4,8,3,2);list.stream().sorted() //默认升序排列,在sorted(Comparator)表示降序排序。.forEach( num -> sout(num) );
最大值、最小值、长度
List<Integer> list = Array.asList(1,5,4,8,3,2);//最大sout(list.stream().max(Integer :: compareTo).get());//最小sout(list.stream().min(Integer :: compareTo).get());//长度sout(list.stream().count());
map对集合执行特定操作后,作为对象输出
List<Integer> list = Array.asList(1,5,4,8,3,2);list.stream().map( num -> num+10 );.forEach( num -> sout(num) ); //得到结果:11,15,14,18,13,12
reduce
对传入的元素进行指定操作后作为对象输出
区别于map输出多个值,reduce只输出一个
//表示累加,两集合里的所有值累加List<Integer> list = Array.asList(1,5,4,8,3,2);sout(list.stream().reduce( (sum,num )-> sum+num).get());
collectors
基于目标集合生成新的集合
//收集当前集合中的所有偶数,并输出偶数集合List<Integer> list = Array.asList(1,5,4,8,3,2);sout(list.stream().filter( num -> num%2==0 ).collect( Collectors.toList() ););
