jdk1.8中Stream 类使用

记录:jdk1.8中Stream 类使用demo

public class TestController {
    
    

    public static void main(String[] args) {
    
    
        Uuser uuser = new Uuser("zs-张三",12);
        Uuser uuser1 = new Uuser("ls-李四",14);
        Uuser uuser2 = new Uuser("ww-王五",15);
        Uuser uuser3 = new Uuser("zl-赵六",18);
        Uuser uuser4 = new Uuser("sq-孙七",19);
        Uuser uuser5 = new Uuser("zb-周八",19);
        List<Uuser> lists = new ArrayList<>();
        List<Uuser> lists2 = new ArrayList<>();
        lists.add(uuser);
        lists.add(uuser1);
        lists.add(uuser2);
        lists.add(uuser3);
        lists.add(uuser4);
        lists2.add(uuser5);
        lists2.add(uuser4);

        Stream<Uuser> limit = lists.stream().limit(2);
        List<Uuser> collect = limit.collect(Collectors.toList());



        /**
         * 全部匹配返回true
         * false
         */
        boolean b = lists.stream().allMatch(t -> t.getAge() > 18);



        /**
         * 任意一个匹配返回true
         * true
         */
        boolean b1 = lists.stream().anyMatch(t -> t.getAge() > 18);
        List<String> collect1 = lists.stream().map(t -> t.getName()).collect(Collectors.toList());



        /**
         * 创建一个懒惰连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素。
         */
        List<Uuser> collect2 = Stream.concat(lists.stream(), lists2.stream()).collect(Collectors.toList());

        /**
         * 返回此流中的元素数。 
         */
        long count = Stream.concat(lists.stream(), lists2.stream()).count();

        /**
         * 去重
         */
        List<Uuser> collect3 = Stream.concat(lists.stream(), lists2.stream()).distinct().collect(Collectors.toList());

        /**
         * 匹配过滤
         */
        List<Uuser> collect4 = Stream.concat(lists.stream(), lists2.stream()).filter(t -> t.getAge() >= 18).collect(Collectors.toList());

        /**
         * 返回描述流的任意一个元素的Optional 如果流为空,则返回一个空的Optional 。
         */
        Optional<Uuser> any = Stream.concat(lists.stream(), lists2.stream()).findAny();

        /**
         * 返回stream的第一个元素 如果流为空,则返回一个空的Optional 。
         */
        Optional<Uuser> first = Stream.concat(lists.stream(), lists2.stream()).findFirst();

        /**
         * 双层 for 循环
         */
        List<Object> collect5 = Stream.concat(lists.stream(), new ArrayList<Uuser>().stream())
                .flatMap(
                        t -> lists2.stream().filter(s->s.getName().equals(t.getName()))
                ).collect(Collectors.toList());

        /**
         * 排序
         */
        List<Uuser> collect6 = Stream.concat(lists.stream(), lists2.stream()).sorted(Comparator.comparing(Uuser::getAge).reversed()).collect(Collectors.toList());
        List<Uuser> collect7 = Stream.concat(lists.stream(), lists2.stream()).sorted((u1, u2) -> u2.getAge() - u1.getAge()).collect(Collectors.toList());
        List<Uuser> collect8 = Stream.concat(lists.stream(), lists2.stream()).sorted((u1, u2) -> u2.getName().compareTo(u1.getName())).collect(Collectors.toList());

        /**
         * 年龄最大,最小
         */
        Optional<Uuser> max = Stream.concat(lists.stream(), lists2.stream()).max(Comparator.comparing(Uuser::getAge));
        Optional<Uuser> min = Stream.concat(lists.stream(), lists2.stream()).min(Comparator.comparing(Uuser::getAge));
        /**
         * 返回其元素为指定值的顺序有序流。
         */
        Stream<? extends Serializable> stream = Stream.of("11", "22", "33", 44);
        /**
         * 求和
         */
        int sum1 = Stream.of(11, 22, 33, 44).mapToInt(t -> t).sum();
        int sum = lists.stream().mapToInt(t -> t.getAge()).sum();
        Integer reduce2 = lists.stream().reduce(0, (i, t) -> i + t.getAge(), Integer::sum);
        Optional<Integer> reduce = Stream.of(11, 22, 33, 44).reduce(Integer::sum);
        Integer reduce1 = Stream.of(11, 22, 33, 44).reduce(0, Integer::sum);
        System.out.println(reduce2);

        /**
         * 分组
         */
        Map<String, List<Uuser>> collect9 = Stream.concat(lists.stream(), lists2.stream()).collect(Collectors.groupingBy(Uuser::getName));
    }

}
class Uuser{
    
    
    private String name;
    private int age;

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    @Override
    public String toString() {
    
    
        return "Uuser{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Uuser(String name, int age) {
    
    
        this.name = name;
        this.age = age;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40319804/article/details/126750825