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을 활용해서 최대한 해결해 봐야겠다.