합계 구하기 : 기본형 스트림의 sum() / 일반 스트림에서 reduce()
list.stream().reduce(0, (a, b -> a+b));
평균 구하기 : average() optional double 형태 -> double 형태로 바꿔주어야함
list.stream().average().orElse(0);
-> 값이 있으면 getAsDuble과 같이 작용 없으면 0 return
🍉 List를 입력받아 요소의 총 합을 리턴
package com.codestates.coplit;
import java.util.*;
public class Solution {
public int computeSumOfAllElements(List<Integer> list){
//TODO..
return list.stream().mapToInt(el -> el).sum();
}
}
mapToInt()로 Optional 타입을 기본형으로 바꿔줌
🍉 List를 입력받아 짝수 요소만 추출한 List를 리턴
package com.codestates.coplit;
import java.util.*;
import java.util.stream.Collectors;
public class Solution {
public List<Integer> filterOddNumbers(List<Integer> list){
//TODO..
return list.stream().filter(el -> el % 2 == 0).collect(Collectors.toList());
}
}
filter()로 짝수 요소만 추출해서 collect()로 요소를 리스트로 리턴
🍉 List를 입력받아, 남성 회원들의 평균 나이를 리턴
package com.codestates.coplit;
import java.util.*;
public class Solution {
public double computeAverageOfMaleMember(List<Member> members) {
//구현된 Member 클래스의 getName(), getGender(), getAge() 메소드로 해당 Member 클래스의 name, gender, age를 확인할 수 있습니다.
//TODO..
return members.stream().filter(el -> el.getGender().equals("Male")).mapToInt(el -> el.getAge()).average().orElse(0.0);
}
// 아래 코드는 변경하지 마세요.
static class Member {
String name;
String gender;
int age;
public Member(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public String getName() {
return name;
}
public String getGender() {
return gender;
}
public int getAge() {
return age;
}
}
}
filter()로 남자를 필터링하고 average()를 사용해서 평균을 구하고 orElse(0)으로 요소가 있으면 getAsDouble을 리턴하고 요소가 없으면 0을 리턴함
🍉 List를 입력받아 중복을 제거하고 정렬한 후 String 타입을 요소로 갖는 배열로 리턴
package com.codestates.coplit;
import java.util.*;
public class Solution {
public String[] makeUniqueNameArray(List<String> names) {
//TODO..
return names.stream().distinct().sorted().toArray(String[]::new);
}
}
distinct()로 중복을 제거, sorted()로 내림차순 정렬한 후 String 타입을 요소로 갖는 배열로 리턴
🍉 int 타입을 요소로 가지는 배열을 입력받아 가장 큰 요소를 리턴
package com.codestates.coplit;
import java.util.*;
public class Solution {
public Integer findBiggestNumber(int[] arr) {
//TODO..
if (arr.length == 0) return null;
return Arrays.stream(arr).max().getAsInt();
}
}
max()로 최댓값 가져와서 getAsInt()로 기본형 리턴
🍉 String 타입을 요소로 가지는 List 두 개를 입력받아, 스트림을 이용해 하나의 List로 합친 결과를 리턴
package com.codestates.coplit;
import java.util.*;
import java.util.stream.*;
public class Solution {
public List<String> mergeTwoStream(List<String> list1, List<String> list2) {
//TODO..
return Stream.concat(list1.stream(),list2.stream()).collect(Collectors.toList());
}
}
concat()으로 list를 합쳐서 collect()로 list 리턴