Java8 flatMap demo 代碼直接可以運行

參考自:http://www.cnblogs.com/shenlanzhizun/p/6027042.html
package com.by.interfaces;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

class Student {

    public Student(long id, String name, int age, int grade, String major, String school) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.grade = grade;
        this.major = major;
        this.school = school;
    }

    public Student(String name) {
        this.name = name;
    }


    public Student() {
    }

    private List<String> attributes = Arrays.asList("111", "222", "333");

    /**
     * 學號
     */
    private long id;

    private String name;

    private int age;

    /**
     * 年級
     */
    private int grade;

    /**
     * 專業
     */
    private String major;

    /**
     * 學校
     */
    private String school;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    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;
    }

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public List<String> getAttributes() {
        return attributes;
    }

    public void setAttributes(List<String> attributes) {
        this.attributes = attributes;
    }
}

public class Main {
    public static void main(String[] args) {

        List<Student> students = new ArrayList<Student>();

        students.add(new Student(20160001, "孔明4", 20, 1, "土木工程", "武漢大學"));
        students.add(new Student(20160002, "伯約", 21, 2, "信息安全", "武漢大學"));
        students.add(new Student(20160003, "玄德", 22, 3, "經濟管理", "武漢大學"));
        students.add(new Student(20160004, "雲長", 21, 2, "信息安全", "武漢大學"));
        students.add(new Student(20161001, "翼德", 21, 2, "機械與自動化", "華中科技大學"));
        students.add(new Student(20161002, "元直", 23, 4, "土木工程", "華中科技大學"));
        students.add(new Student(20161003, "奉孝", 23, 4, "計算機科學", "華中科技大學"));
        students.add(new Student(20162001, "仲謀", 22, 3, "土木工程", "浙江大學"));
        students.add(new Student(20162002, "魯肅", 23, 4, "計算機科學", "浙江大學"));
        students.add(new Student(20163001, "丁奉", 24, 5, "土木工程", "南京大學"));

        //mapToLong的使用demo
        double value = students.stream().filter(student -> "計算機科學".equals(student.getMajor())).mapToLong(aaa -> aaa.getId()).sum();


        String[] strs = {"java8", "is", "easy", "to", "use"};


        List<String[]> distinctStrs = Arrays.stream(strs)
                .map(str -> str.split(""))  // 映射成爲Stream<String[]>
                .distinct()
                .collect(Collectors.toList());

        distinctStrs.forEach(strings -> Arrays.stream(strings).forEach(s -> System.out.println(s)));


        System.out.println("==================================map方式");

        List<String> distinctStrsByFlatMap = Arrays.stream(strs)
                .map(str -> str.split(""))  // 映射成爲Stream<String[]>
                .flatMap(Arrays::stream)  // 扁平化爲Stream<String>
                .distinct()
                .collect(Collectors.toList());

        distinctStrsByFlatMap.forEach(s -> System.out.println(s));

        System.out.println("==================================flatMap的方式");


        List<List<Student>> studentss = new ArrayList<>();
        studentss.add(students);
        studentss.add(students);
        System.out.println(studentss.size());

        System.out.println("經過了flatmap處理後的stream查看下尺寸是多少" + studentss.stream().flatMap(students1 -> students1.stream()).count());

        System.out.println(studentss.stream().flatMap(students1 -> students1.stream()).max((o1, o2) -> (o1.getName().length() - o2.getName().length())).get().getName());


        System.out.println("經過了flatMap進行了徹底的流處理查看下有多少流" + studentss.stream().flatMap(students1 -> students1.stream()).flatMap(student -> student.getAttributes().stream()).count());


        studentss.stream().flatMap(students1 -> students1.stream()).flatMap(student -> student.getAttributes().stream()).forEach(s -> System.out.println(s));


        

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章