스트림에 관한 설명은 이전 포스트를 확인하시면 됩니다.
https://imspear.tistory.com/63
우선 데이터를 테스트할 수 있도록 DTO를 생성하겠습니다.
DTO 생성
public class StudentDTO {
String name;
int age;
int score_ma;
int score_en;
public StudentDTO(String name, int age, int score_ma, int score_en) {
super();
this.name = name;
this.age = age;
this.score_ma = score_ma;
this.score_en = score_en;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getScore_ma() {
return score_ma;
}
public void setScore_ma(int score_ma) {
this.score_ma = score_ma;
}
public int getScore_en() {
return score_en;
}
public void setScore_en(int score_en) {
this.score_en = score_en;
}
}
main() 메소드를 이용하여 실행할 수 있도록 클래스를 하나 더 생성하도록 하겠습니다.
import java.util.ArrayList;
import java.util.List;
public class StudentForEachSample {
public static void main(String[] args) {
StudentForEachSample sample = new StudentForEachSample();
List<StudentDTO> list = new ArrayList<>();
list.add(new StudentDTO("this", 19, 80, 80));
list.add(new StudentDTO("is", 22, 80, 80));
list.add(new StudentDTO("hi", 24, 90, 10));
sample.printStudentName(list);
}
public void printStudentName(List<StudentDTO> students) {
students.stream().forEach(student -> System.out.println(student.getName()));
}
}
printStudentName() 메서드안에 forEach()를 이용하여 각 student의 이름을 출력하도록 만들었습니다.
public void printStudentName(List<StudentDTO> students) {
students.stream().forEach(student -> System.out.println(student.getName()));
}
단순한 for문을 이용한 방법입니다.
위 printStudentName 과 다른 방법이지만 동일하게 결과를 출력할 수 있는 메소드를 생성할 수 있습니다. 물록 getAge() 메소드를 이용했으니 리턴 값은 나이 값이 순서대로 출력이 됩니다.
public void printStudentAge(List<StudentDTO> studens) {
for(StudentDTO student:studens) System.out.println(student.getAge());
}
map()메소드를 이용
이렇게 map()을 이용하면 DTO 객체를 이용하는 것이 아니라 student.getScore_en()의 결과인 String 값을 사용하는 것입니다. 여기서 주의할 점은 map() 이후에 나오는 메소드들은 List<StudentDTO>가 아닌 List<String>의 스트림을 처리하는 것입니다.
public void printStudentScoreEn(List<StudentDTO> students) {
students.stream().map(student -> student.getScore_en()).forEach(score -> System.out.println(score));
}
자바 Stream에서 foreach() 메서드를 사용해 데이터를 정렬 할 수 있는 많은 방법들을 사용했습니다. 만약 위의 메서드 안의 화살표 모향을 이해하지 못한다면 자바 버전 8 부터 나온 람다 표현식에 대해 찾아보시면 됩니다.
https://imspear.tistory.com/62
자바 람다 표현식_자바 버전 8(Lambda expression in Java version 8)
Lambda 표현식 같은 경우는 Java version 8 이상부터 사용이 가능합니다. 자바 람다 표현식 클래스는 인터페이스에 메서드가 '하나'만 있어야 사용 가능하다는 점 꼭 유의해야 합니다. 자바 패키지에��
imspear.tistory.com
오늘은 여기까지~
'JAVA_SPRING > JAVA' 카테고리의 다른 글
String 클래스에 대한 학습 테스트 (0) | 2022.02.05 |
---|---|
Set Collection에 대한 학습 테스트 (0) | 2022.02.05 |
자바 기본자료형(Primitive data type)을 왜 사용할까? (0) | 2022.01.29 |
OpenAPI 데이터를 자바를 이용해 데이터를 받기(POSTMAN을 이용해 공공데이터 오픈API에 데이터 요청, Java, OkHttp 이용) (0) | 2021.08.04 |
자바 람다 표현식_자바 버전 8(Lambda expression in Java version 8) (0) | 2020.06.24 |