자바 8-Lambda 표현 식 사용 및 Stream API

5467 단어 자바
선행 데이터

private List peoples = null;

@BeforeEach void before () {
    peoples = new ArrayList<>();
    peoples.add(new People("K.O1", 21, new Date()));
    peoples.add(new People("K.O3", 23, new Date()));
    peoples.add(new People("K.O4", 24, new Date()));
    peoples.add(new People("K.O5", 25, new Date()));
    peoples.add(new People("K.O2", 22, new Date()));
    peoples.add(new People("K.O6", 26, new Date()));
}

추출 대상 의 열
/**
*   1 
*/
@Test void whenExtractColumnSuccess () {
    //     
    List ages1 = peoples.stream().map(people -> people.getAge()).collect(Collectors.toList());
    System.out.println("###println: args1----");
    ages1.forEach(System.out::println);

    //       
    List ages2 = peoples.stream().map(People::getAge).collect(Collectors.toList());
    System.out.println("###println: args2----");
    ages1.forEach(System.out::println);
}
###println: args1----
21
22
23
24
25
26
###println: args2----
21
22
23
24
25
26

0x 02.필드 의 조건 을 통 해 집합 목록 을 필터 합 니 다.
/**
    *       25   
    */
@Test void whenFilterAgeGT25Success () {
    List peoples1 = peoples.stream().filter(x -> x.getAge() > 25).collect(Collectors.toList());
    peoples1.forEach(x -> System.out.println(x.toString()));
}
People{name='K.O6', age=26, birthday=Wed May 15 22:20:22 CST 2019}

0x 03.목록 의 대상 수치 형 열 데이터 구 합
/**
    *       
    */
@Test void sumAllPeopleAgeSuccess () {
    Integer sum1 = peoples.stream().collect(Collectors.summingInt(People::getAge));
    System.out.println("###sum1: " + sum1);
    Integer sum2 = peoples.stream().mapToInt(People::getAge).sum();
    System.out.println("###sum2: " + sum2);
}
    ###sum1: 141
    ###sum2: 141

0x 04.집합 조건 에 맞 는 첫 번 째 요 소 를 추출 합 니 다.
/**
    *      25   
    */
@Test void extractAgeEQ25Success () {
    Optional optionalPeople =  peoples.stream().filter(x -> x.getAge() == 25).findFirst();
    if (optionalPeople.isPresent()) System.out.println("###name1: " + optionalPeople.get().getName());

    //  
    peoples.stream().filter(x -> x.getAge() == 25).findFirst().ifPresent(x -> System.out.println("###name2: " + x.getName()));
}
###name1: K.O5
###name2: K.O5

0x 05.집합 중의 대상 문자 열 을 규칙 에 따라 조합 합 니 다.
/**
    *         
    */
@Test void printAllNameSuccess () {
    String names = peoples.stream().map(People::getName).collect(Collectors.joining(","));
    System.out.println(names);
}
K.O1,K.O2,K.O3,K.O4,K.O5,K.O6

0x 06.집합 원 소 를 추출 하여 맵 으로 전환 합 니 다.
/**
    *      (name, age)  map
    */
@Test void list2MapSuccess () {
    Map map1 = peoples.stream().collect(Collectors.toMap(People::getName, People::getAge));
    map1.forEach((k, v) -> System.out.println(k + ":" + v));

    System.out.println("--------");

    //(name object)
    Map map2 = peoples.stream().collect(Collectors.toMap(People::getName, People::getThis));
    map2.forEach((k, v) -> System.out.println(k + ":" + v.toString()));
}

//People        
public People getThis () {
    return this;
}
K.O2:22
K.O3:23
K.O1:21
K.O6:26
K.O4:24
K.O5:25
--------
K.O2:People{name='K.O2', age=22, birthday=Wed May 15 22:42:39 CST 2019}
K.O3:People{name='K.O3', age=23, birthday=Wed May 15 22:42:39 CST 2019}
K.O1:People{name='K.O1', age=21, birthday=Wed May 15 22:42:39 CST 2019}
K.O6:People{name='K.O6', age=26, birthday=Wed May 15 22:42:39 CST 2019}
K.O4:People{name='K.O4', age=24, birthday=Wed May 15 22:42:39 CST 2019}
K.O5:People{name='K.O5', age=25, birthday=Wed May 15 22:42:39 CST 2019}

0x 07.특정한 속성 을 집합 하여 그룹 을 나눈다.
/**
    *      
    */
@Test void listGroupByNameSuccess() {
    //           
    peoples.add(new People("K.O1", 29, new Date()));
    Map> map = peoples.stream().collect(Collectors.groupingBy(People::getName));

    map.forEach((k, v) -> System.out.println(k + ":" + v.size()));
}
K.O2:1
K.O3:1
K.O1:2
K.O6:1
K.O4:1
K.O5:1

0x 08.집합 대상 수치 열 평균 수 구하 기
/**
    *       
    */
@Test void averagingAgeSuccess () {
    Double avgAge = peoples.stream().collect(Collectors.averagingInt(People::getAge));
    System.out.println(avgAge);
}
23.5

0x 09.집합 을 한 열 로 정렬 합 니 다.
/**
    *      
    */
@Test void sortByAgeSuccess () {
    System.out.println("###   ---");
    peoples.forEach(x -> System.out.println(x.getAge()));

    peoples.sort((x, y) -> {
        if (x.getAge() > y.getAge()) {
            return 1;
        } else if (x.getAge() == y.getAge()) {
            return 0;
        }
        return -1;
    });

    System.out.println("###   ---");
    peoples.forEach(x -> System.out.println(x.getAge()));
}
###   ---
21
23
24
25
22
26
###   ---
21
22
23
24
25
26

계속

좋은 웹페이지 즐겨찾기