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)
였다. 이유는??????????????????????