3、java8的Stream

1、算子介绍

中间算子

  1. filter: Stream<T> filter(Predicate<? super T> predicate);

  1. sorted: Stream<T> sorted(Comparator<? super T> comparator);

  1. map: <R> Stream<R> map(Function<? super T, ? extends R> mapper);

  1. distinct: Stream<T> distinct();

终端算子:

  1. anyMatch:boolean anyMatch(Predicate<? super T> predicate);

  1. reduce: Optional<T> reduce(BinaryOperator<T> accumulator);

  1. foreach: void forEach(Consumer<? super T> action);

2、案例

package java8;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

public class StreamExam4 {
    public static void main(String[] args) {
        Trader raoul = new Trader("Raoul", "Cambridge");
        Trader mario = new Trader("Mario", "Milan");
        Trader alan = new Trader("Alan", "Cambridge");
        Trader brain = new Trader("Brain", "Cambridge");

        List<Transaction> transactions = Arrays.asList(new Transaction(2011, 300, brain),
                new Transaction(2012, 1000, raoul),
                new Transaction(2011, 400, raoul),
                new Transaction(2012, 710, mario),
                new Transaction(2012, 710, mario),
                new Transaction(2012, 950, alan));

        //过滤年份2011&&按照value排序
        transactions.stream()
                .filter(transaction -> transaction.getYear() == 2011)
                .sorted(Comparator.comparing(Transaction::getValue))
                .forEach(System.out::println);

        //所有的城市去重
        transactions.stream()
                .map(transaction -> transaction.getTrader().getCity())
                .distinct()
                .forEach(System.out::println);

        //所有的名字去重、排序、拼接
        String reduceRes = transactions.stream()
                .map(transaction -> transaction.getTrader().getName())
                .distinct()
                .sorted()//可以不传参数
                .reduce("", String::concat);
        System.out.println(reduceRes);

        //是否有trader在milan
        boolean milan = transactions.stream()
                .anyMatch(transaction -> transaction.getTrader().getCity().equals("Milan"));
        System.out.println(milan);

        //找到最大的value
        Optional<Integer> maxValue = transactions.stream()
                .map(Transaction::getValue)
                .reduce(Integer::max);
        System.out.println(maxValue.get());


    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值