[TIL] 2024-08-06

woo·2024년 8월 6일

StudentID가 같은 Student객체를 Studentstore에서 찾기 위해서 forEach를 아래 코드와 같이 돌렸으나

for(Student student : studentstore){
	if(student.getStudentID().equals(studentID)){
    	break;
    }
    count++;
 }

if문의 조건식이 true임에도 count가 계속 증가하는 오류가 발생했다. 찾아보니 forEach문의 경우 break를 통해 반복문을 중단시킬 수 없어서 for문을 전부 수행해 발생하는 오류였다.

IStudent student = (IStudent) studentStore.stream()
                .filter(student1 -> student1.getStudentID().equals(studentId))
                .findFirst()
                .orElse(null);

위의 코드와 같이 Stream을 활용해 filter로 조건에 맞는 student를 골라내 findFirst()로 가져와 초기화 해줌으로써 오류를 해결할 수 있었다.

foreach문의 경우 stream을 사용할 수 있는 경우가 많은 것 같아서 반복문에 조건을 걸어줄 필요가 있을 경우에는 for문이나 stream을 활용해서 최대한 해결해 봐야겠다.

0개의 댓글