ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] JAVA8 스트림 Max&Min 사용 방법
    자바/자바8 2020. 9. 17. 11:39

    이번 시간에는 Stream API를 이용해서 주어진 collection에서 max & min 값을 찾아내는 방법에 대해서 알아보도록 하겠습니다.

    Integer 리스트에서 Max 값 찾기

    @Test
    public void testFindMaxValueInIntegerList() throws Exception {
        // given
        Integer expectedResult = 70;
        List<Integer> listOfIntegers = Array.asList(4, 9, 1, 10, 48, 70);
    
        // when
        Integer max = listOfIntegers
            .stream()           // 리스트 객체에서 스트림을 얻어오는 함수
            .mapToInt(v -> v)   // Integer 스트림을 얻어오는 함수
            .max()              // max 값을 얻어오는 함수
            .orElseThrow(NoSuchElementException::new);    // 결과값이 없을 경우 Exception을 전달하는 함수
    
        // then
        assertEquals("Max value is 70", expectedResult, max);
    }

    Custom 객체에서 Min 값 찾기

    우선 Member라는 Custom 객체를 만듭니다.

    @Getter
    @Setter
    @AllArgsConstructor
    public class Member {
        String name;
        Integer age;
    }
    

    Member 객체 리스트에서 가장 나이가 적은 사람을 조회하는 테스트 케이스를 만들어보겠습니다.

    @Test
    public void testFindMinValueInCustomObjectList() throws Exception {
        // given
        Member member1 = new Member("member1", 40);
        Member member2 = new Member("member2", 20);
        Member member3 = new Member("member3", 30);
        List<Member> members = Arrays.asList(member1, member2, member3);
    
        // when
        Member minAgeMember = members
            .stream()		// 리스트 객체에서 스트림을 얻어오는 함수
            .min(Comparator.comparing(Member::getAge))	// min 값을 얻어오는 함수
            .orElseThrow(NoSuchElementException::new);	// 결과값이 없을 경우 Exception을 전달하는 함수
    
        // then
        assertEquals("Min age member is member2", member2, minAgeMember);
    }

    이상으로 JAVA8 Stream을 활용하여 Max, Min 값을 찾는 방법에 대해서 알아보았습니다.

    댓글

Designed by Tistory.