java8 stream/optional个人测试demo记录

备忘记录

package cc.ash;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

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

public class StreamTest {

    public static void main(String[] args) {

        ArrayList<Stu> stus = new ArrayList<>();
        Stu a = new Stu("name-A", 17, 64, "A");
        Stu b = new Stu("name-B", 20, 58, "B");
        Stu c = new Stu("name-C", 27, 60, "C");
        Stu d = new Stu("name-D", 24, 56, "D");

        stus.add(a);
        stus.add(b);
        stus.add(c);
        stus.add(d);

//        streamOpt(stus);
        stus.add(null);
        optionalHandleClct(stus);
        optionalHandle(null);
    }


    public static void streamOpt(List<Stu> stuList) {

        stuList.stream()
                .filter(s -> s.getAge() > 19)
                .peek(o -> System.out.println(o.getName()))
                .sorted((x, y) -> x.getWeight() - y.getWeight())//.mapToInt(Stu::getWeight).sum();
                .peek(o -> System.out.println(o.getName()))
                .map(Stu::getAlias)
                .peek(System.out::println)
                .collect(Collectors.toList());

        stuList.stream()
                .filter(o -> o.getWeight() > 45 && o.getWeight() < 61)
//                .sorted((x, y) -> x.getWeight() - y.getWeight())
                //默认升序、反转降序。体重相同在根据年龄排序
                .sorted(Comparator.comparing(Stu::getWeight).reversed().thenComparing(Stu::getAge))
                .forEach(per -> System.out.println(per.getName()));

    }

    public static int optionalHandle(Stu stu) {
        return Optional.ofNullable(stu).map(Stu::getAge).orElse(-1);
//        return stu == null ? -1 : stu.getAge(); //等价
//        if(stu == null) {
//            System.out.println("无信息,日志输出,异常处理");
//            return  -1;
//        }
//        return stu.getAge();
    }
    public static void optionalHandleClct(List<Stu> stu) {

        int sum = stu.stream().mapToInt(o -> Optional.ofNullable(o).map(Stu::getAge).orElse(-1)).sum();
        System.out.println(sum);

    }
}

@AllArgsConstructor
@NoArgsConstructor
@Data
class Stu {
    private String name;
    private int age;
    private int weight;
    private String alias;
}
View Code

https://blog.csdn.net/qq_20989105/article/details/81234175

猜你喜欢

转载自www.cnblogs.com/foolash/p/11798490.html