-
[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 값을 찾는 방법에 대해서 알아보았습니다.
'자바 > 자바8' 카테고리의 다른 글
[Stream] int 숫자 배열을 filter를 통해서 내림차순으로 정렬하기 (0) 2021.04.22 [JAVA] Streams를 이용한 Map Collection 사용 방법 (0) 2021.01.20