220916 자바

하온푸·2022년 9월 16일
0

Integer타입의 list 받아서 평균구하기 문제

double avg = list.stream().mapToDouble(x->x).average();

까지 했는데 Cannot convert to double 오류 발생

맨 뒤에 .orElse(0.0)을 붙이니까 정상작동

double avg = list.stream().mapToDouble(x->x).average().orElse(0.0);

안붙인건 아직 optional 인데 orElse()는 인자가 값이면 값을 그렇지 않으면 넘겨받은 argument를 리턴한다


이름과 성별을 가진 Member라는 클래스에서 생성된 객체로 이루어진 List에서 여성회원 인원수 구하기

long count = list2.stream()
                  .filter(x->x.getGender().equals("F"))
                  .count();

로 해결했는데 count(); 라는 최종연산자는 long 타입으로 리턴하기 때문


toArray() 사용법

List<String> names = Arrays.asList("aa","bb","cc","gg","dd");
        String[] array = names.stream()
                .distinct()
                .sorted()
                .toArray(★★★);

★★★에는 String[]::new 가 들어가야 한다 왜?

클래스명::new

은 기본적으로 생성자를 참조하는 문법이고 즉 객체를 생성한다는 의미

매개변수 타입과 갯수가 알맞은 생성자를 알아서 찾아서 실행한다


mapToInt()에서 string의 길이 구하기

.mapToInt(x->x.length)

인줄 알았는데

.mapToInt(String::length)

였다. 이유는??????????????????????

profile
떵대지

0개의 댓글