java8 stream 的简单使用

package proxy;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class TestStream {
    public static void main(String[] args) {
        List<User> users = Arrays.asList(
                new User(1L, "Jack", 23),
                new User(2L, "Mary", 31),
                new User(3L, "Tom", 17),
                new User(4L, "Cat", 16),
                new User(5L, "Peter", 19),
                new User(6L, "Joe", 40),
                new User(7L, "Lee", 19),
                new User(8L, "Sam", 33),
                new User(9L, "Bill", 40),
                new User(10L, "Bob", 15)
                 );

        //List<User> collect = users.stream().filter(TestStream::test).collect(Collectors.toList());
        //年龄大于30的

        List<User> ages = users.stream().filter(user -> user.getAge()>30).collect(Collectors.toList());
        //年龄大于30岁的
        List<String> names = users.stream().filter(user -> user.getAge() > 30).map(user -> user.getName()).collect(Collectors.toList());
        //按年龄从小到大排列
        Stream<User> orders=users.stream().sorted(Comparator.comparing(user ->user.getAge())); // reversed

        //按年龄从大到小排列
        Stream<User> orders1=users.stream().sorted(Comparator.comparing(User::getAge).reversed());

        // 获取年龄最小的
        Optional<User> min = users.stream().min(Comparator.comparing(user -> user.getAge()));

        //获取年龄最大的
        Optional<User> max = users.stream().max(Comparator.comparing(user -> user.getAge()));

        //获得所有的年龄综合
        long count = users.stream().map(User::getAge).reduce((user, user2) -> user+user2).get().longValue();
        // users.stream().map(user -> {new HashMap<>().put(user.getId(),user)}).

        //把list转成Map ,key为用户id,值为用户本身
        Map<Long, Object> longObjectMap = users.stream().collect(Collectors.toMap(user -> user.getId(),user -> user));

        //按年龄分组
        Map<Integer, List<User>> integerListMap = users.stream().collect(Collectors.groupingBy(User::getAge));

        //按年龄统计
        Map<Integer, Long> integerLongMap = users.stream().collect(Collectors.groupingBy(User::getAge, Collectors.counting()));

        //按年年龄分组,返回每组的name最⻓长的

        Function<User, Integer> function = p -> -p.getName().length();
        Map<Integer, Optional<User>> integerOptionalMap = users.stream().
                collect(Collectors.groupingBy(User::getAge,Collectors.maxBy(Comparator.comparing(function).reversed())));
        //取得分组年龄的平均值


        Double collect = users.stream().collect(Collectors.averagingDouble(User::getAge));

        ages.forEach(user -> System.out.println(user.getName()));
        System.out.println("===============");
        names.forEach(s -> System.out.println(s));
        System.out.println("===============");
        orders.forEach(user -> System.out.println(user.getName()+","+user.getAge()));
        System.out.println("===============");
        orders1.forEach(user -> System.out.println(user.getName()+","+user.getAge()));

        System.out.println("===============");
        System.out.println(min.get().getName()+","+min.get().getAge());

        System.out.println("===============");
        System.out.println(max.get().getName()+","+max.get().getAge());


        System.out.println("===============");
        System.out.println(count);
        System.out.println("===============");
        Iterator<Map.Entry<Long, Object>> iterator = longObjectMap.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry<Long, Object> next = iterator.next();
            System.out.println(next.getKey()+","+next.getValue().toString());
        }
        System.out.println("===============");
        Iterator<Map.Entry<Integer, List<User>>> iterator1 = integerListMap.entrySet().iterator();
        while (iterator1.hasNext()){
            Map.Entry<Integer, List<User>> next = iterator1.next();
            System.out.println(next.getKey()+","+next.getValue().toString());
        }


        System.out.println("===============");
        Iterator<Map.Entry<Integer, Long>> iterator2 = integerLongMap.entrySet().iterator();
        while (iterator2.hasNext()){
            Map.Entry<Integer,Long> next = iterator2.next();
            System.out.println(next.getKey()+","+next.getValue().toString());
        }
        System.out.println("===============");

        Iterator<Map.Entry<Integer, Optional<User>>> iterator3 = integerOptionalMap.entrySet().iterator();
        while (iterator3.hasNext()){
            Map.Entry<Integer, Optional<User>> next = iterator3.next();
            System.out.println(next.getKey()+","+next.getValue().toString());
        }
        System.out.println("===============");
        System.out.println(collect);



    };

    private static boolean test(User user){
        return user.getAge()>30;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值