关于stream流的优化

当我们使用list.stream.filter时有多个条件过滤时

我们可以利用and或者or进行层级过滤

list.stream().filter(predicate1.and(predicate2)).collect(Collectors.toList());

lambda表达式讲解:

举个例子

 public class Text {
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("lambda");
            }
        });
        thread.start();
    }
}
当我们用匿名内部类的方法写一个东西最核心的东西是什么,是我们的输出语句 lambda

函数式编程:我们只需要把方法的实现传过来就可以了

只需要一行一个线程就启动了

new Thread(()->{
        System.out.println("lambda");
    }
    ) .start();

接下来我们看stream流各种各样的方法

filter过滤

List<String> strings = Arrays.asList("哈哈哈", "hshashksj", "是计算机计算机");
//这的s相当于每一个字符串对象
1.List<String> collect1 = strings.stream().filter(s -> s.length() > 3).collect(Collectors.toList());
System.out.println(collect1);
输出[hshashksj, 是计算机计算机] 对象形式
//forEach 进行一个循环
2.  strings.stream().filter(s -> s.length() > 3).forEach(s-> System.out.println(s));
hshashksj
是计算机计算机

limit截取

strings.stream().limit(2).forEach(a-> System.out.println(a)); List<String> collect2 = strings.stream().limit(2).collect(Collectors.toList());

sorted排序 升序

List<Integer> integers = Arrays.asList(1, 56, 99, 111, 333);
List<Integer> collect3 = integers.stream().sorted().collect(Collectors.toList());
System.out.println(collect3);

降序

List<Integer> collect3 = integers.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
System.out.println(collect3);
//求最大值
 Integer integer = integers.stream().max(Integer::compareTo).get();
 System.out.println(integer);
//最小值
 Integer integer1 = integers.stream().min(Integer::compareTo).get();
 System.out.println(integer1);
//数量
 long count = integers.stream().count();
 System.out.println(count);

//对集合中的元素进行特定的操作

比方说对集合中的元素都进行一个加10 

map

integers.stream().map(integer2 -> integer2+10).forEach(string-> System.out.println(string));

reduce将所有的元素合并成一个值 比如返回元素中的所有值之和

Integer integer2 = integers.stream().reduce((sum, num) -> sum + num).get();
System.out.println(integer2);所有元素之和

collection把元素筛选出来生成一个新的集合

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值