package com.cmit.dashboard.backend.other;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Test55 {
    public static void main(String[] args) {
        List<SnStateChangedTest> SnStateChangedTestList = new ArrayList<>();
        SnStateChangedTest ssc1 = SnStateChangedTest.builder().sn("1a").snChannel("1c").snVersion("1v").snYear("1y").count(1).build();
        SnStateChangedTest ssc2 = SnStateChangedTest.builder().sn("2a").snChannel("2c").snVersion("2v").snYear("2y").count(2).build();
        SnStateChangedTest ssc3 = SnStateChangedTest.builder().sn("3a").snChannel("3c").snVersion("3v").snYear("3y").count(3).build();
        SnStateChangedTest ssc4 = SnStateChangedTest.builder().sn("1a").snChannel("1c").snVersion("1v").snYear("1y").count(1).build();
        SnStateChangedTest ssc5 = SnStateChangedTest.builder().sn("1a").snChannel("1c").snVersion("1vv").snYear("1yy").count(1).build();
        SnStateChangedTestList.add(ssc1);
        SnStateChangedTestList.add(ssc2);
        SnStateChangedTestList.add(ssc3);
        SnStateChangedTestList.add(ssc4);
        SnStateChangedTestList.add(ssc5);

        /** distinct + map */
        List<SnStateChangedTest> listNew = SnStateChangedTestList.stream().distinct().map(ssc -> {
            // TODO here!!! The result of [listNew] is different whether you use this line of code ---> ssc.setChangeFlag(1);
            //ssc.setChangeFlag(1);
            System.out.println(ssc);
            return ssc;
        }).collect(Collectors.toList());

        /**
         * use the 'change code' --> the size of [listNew] is 5.
         * not use 'change code' --> the size of [listNew] is 4.
         */
        System.out.println(">>>>end>>>>");
    }
}
