public class Solution {
public int computeSumOfAllElements(List<Integer> list){
//TODO.. 스트림 생성 총 합 리턴 비어있는 경우 0을 반환
return list.stream()
.mapToInt(number-> number) //int로 매핑하고새로운 IntStream구성
.sum(); //총합
2
public class Solution {
public double computeAverageOfNumbers(List<Integer> list) {
//TODO..Integer요소 List 입력받아 평균을 리턴
return list.stream()
.mapToInt(number -> number)//int 로 변환
.average()
.orElse(0.0);
}
}
3
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(element->element%2==0)
.collect(Collectors.toList());//스트림요소를 리스트로 모음
}
}
collect(Collectors.toSet())를 사용하면 스트림 요소를 집합(Set)으로 모을 수 있고,
collect(Collectors.toMap())를 사용하면 스트림 요소를 맵(Map)으로 모을 수 있다
collect(Collectors.toList())
이렇게 collect 메소드와 컬렉터를 사용하면 스트림의 처리 결과를 다양한 형태로 저장하고 활용할 수 있음
4
package com.codestates.coplit;
import java.util.*;
public class Solution {
public long computeCountOfFemaleMember(List<Member> members) {
//구현된 Member 클래스의 getName(), getGender() 메소드로 해당 Member 클래스의 name, gender를 확인할 수 있습니다.
//TODO..Member리스트를 입력받아 여성회원의 수 리턴
return members.stream()
.filter(member->member.getGender().equals("Female"))
.count();
}
// 아래 코드는 변경하지 마세요.
static class Member {
String name;
String gender;
public Member(String name, String gender) {
this.name = name;
this.gender = gender;
}
public String getName() {
return name;
}
public String getGender() {
return gender;
}
}
}
람다식때문에 헷갈린다..
5
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(member->"Male".equals(member.getGender()))
.mapToDouble(Member::getAge)//나이메서드를 참조해서 더블값으로 변환
.average()
.orElse(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;
}
}
}
6
import java.util.*;
public class Solution {
public String[] makeUniqueNameArray(List<String> names) {
//TODO..중복요소 제거후 정렬 String타입 배열리턴
return names.stream()
.distinct()//중복제거
.sorted()//정렬
.toArray(String[]::new);//스트링배열생성
}
}
7
import java.util.*;
public class Solution {
public String[] filterName(List<String> names) {
//TODO..중복제거 김씨만 남기기(필터) 정렬-오름차순 가나다
//반환
return names.stream()
.distinct() //중복제거
.filter(name -> name.startsWith("김")) //첫시작 문자열이 해당입력값일때 제거해줌
.sorted() //자동 오름차순
.toArray(String[]::new); //스트림타입을 문자열로 변환
//문자열배열 생성자 new
}
}
- endsWith(String str): 주어진 문자열 str로 끝나는지를 확인합니다. 예를 들어, "Hello, World!"가 "World!"로 끝나는지 확인할 수 있습니다.
- contains(CharSequence sequence): 주어진 문자열 또는 문자열 시퀀스 sequence가 해당 문자열에 포함되는지를 확인합니다. 예를 들어, "Hello, World!" 문자열에 "Hello"가 포함되는지 확인할 수 있습니다.
- indexOf(String str): 주어진 문자열 str이 해당 문자열에서 처음으로 나타나는 인덱스를 반환합니다. 만약 문자열에 포함되어 있지 않다면 -1을 반환합니다.
- lastIndexOf(String str): 주어진 문자열 str이 해당 문자열에서 마지막으로 나타나는 인덱스를 반환합니다. 만약 문자열에 포함되어 있지 않다면 -1을 반환합니다.
- substring(int beginIndex, int endIndex): 문자열을 특정 범위의 문자열로 잘라내어 반환합니다. beginIndex는 잘라낼 부분의 시작 인덱스를 나타내며, endIndex는 잘라낼 부분의 끝 인덱스를 나타냅니다.
- replace(CharSequence target, CharSequence replacement): 문자열 내에서 target 문자열을 찾아 replacement 문자열로 대체합니다.
- toLowerCase() 및 toUpperCase(): 문자열을 각각 소문자 또는 대문자로 변환하는 메서드입니다.
8
import java.util.*;
public class Solution {
public Integer findBiggestNumber(int[] arr) {
//TODO..
if(arr.length==0){
return null;
}
return Arrays.stream(arr)
.max()
.getAsInt();
}
}
- getAsInt:
- getAsInt 메서드는 OptionalInt 객체에 값이 포함되어 있을 때, 그 값을 추출하여 반환합니다.
- 만약 OptionalInt 객체가 값을 포함하고 있지 않을 경우, NoSuchElementException 예외를 발생시킵니다.
- 주로 값이 반드시 존재해야 하는 상황에서 사용됩니다. 즉, 값이 없을 경우 예외를 발생시키는 방식으로 처리합니다.
- orElse:
- orElse 메서드는 OptionalInt 객체에 값이 포함되어 있을 때, 그 값을 반환합니다.
- 만약 OptionalInt 객체가 값을 포함하고 있지 않을 경우, 지정된 기본값을 반환합니다.
- 주로 값이 없을 때 기본값을 제공하여 안전하게 처리하고자 할 때 사용됩니다.
요약하면, getAsInt은 값이 반드시 존재해야 하는 상황에서 사용되며, 값이 없을 경우 예외를 발생시키는 방식으로 처리합니다. 반면에 orElse는 값이 없을 때 기본값을 제공하여 안전하게 처리하고자 할 때 사용
9
import java.util.*;
public class Solution {
public int findLongestLength(String[] strArr) {
//TODO..
return Arrays.stream(strArr)
.mapToInt(d->d.length())
.max()
.orElse(0);
}
}
10
import java.util.*;
import java.util.stream.*;
public class Solution {
public List<String> mergeTwoStream(List<String> list1, List<String> list2) {
//TODO..
Stream<String> stream1 = list1.stream(); // list1의 스트림을 생성합니다.
Stream<String> stream2 = list2.stream(); // list2의 스트림을 생성합니다.
Stream<String> stream3 = Stream.concat(stream1, stream2); // 두 개의 스트림을 합칩니다.
return stream3.collect(Collectors.toList()); // 합쳐진 스트림을 List형태로 리턴합니다.
}
}
모르겠다 concat
concat() 메서드를 사용하면 두 개의 스트림을 연결하여 하나의 스트림을 만들 수 있습니다. 즉, 첫 번째 스트림(a)의 요소를 모두 처리한 후 두 번째 스트림(b)의 요소를 처리하게 됩니다. 이를 통해 여러 스트림을 순차적으로 처리하고 연결할 수 있습니다.
주로 concat() 메서드는 스트림에서 데이터를 합치거나 조합해야 하는 상황에서 사용됩니다. 예를 들어, 두 개의 리스트나 배열을 스트림으로 변환한 후 이를 하나의 스트림으로 합쳐서 연산을 수행할 때 유용하게 활용될 수 있습니다.
또한, concat() 메서드는 중간 연산(Intermediate Operation)이 아니므로, 다른 스트림 연산과 함께 연결하여 사용할 수 있습니다.
11
import java.util.*;
import java.util.stream.*;
public class Solution {
public List<Integer> makeElementDouble(List<Integer> list) {
//TODO..
return list.stream()
.map(element->element*2)
.collect(Collectors.toList());
}
}
12
import java.util.*;
public class Solution {
public boolean isHot(int[] temperature) {
//TODO..
if (temperature.length != 7){
return false;
}
//스트림으로 배열중 30이상인 요소의 개수를 셈
long hotDays = Arrays.stream(temperature)
.filter(temp->temp>=30) //30이상인 요소만 골라서 새로운 스트림 생성
.count();
if(hotDays>=3){ //30이상인 요소의 개수가 3개이상인 경우 true 아닌경우 false
return true;
}else{
return false;
}
}
}
이건 진짜...좀 그래..
13
import java.util.*;
import java.util.stream.*;
public class Solution {
public List<String> findPeople(List<String> male, List<String> female, String lastName) {
//TODO..
return Stream.concat(male.stream(),female.stream())//남녀리스트를 스트림으로 변환후 결합
.distinct()//중복제거
.filter(name->name.startsWith(lastName))
.sorted()//정렬
.collect(Collectors.toList());
}
}