본문 바로가기

JAVA/DAY 20 _ 23.09.13

Stream활용 예시

// 빈공간에 우클릭 -> source -> generate... (ex. 생성자를 불러오려면 constructor겠지)

 

// class Student, StudentEntity의 기본생성자, full생성자, setter, getter가 모두 정리돼어있다고 가정

(블로그올리기엔 너무 크당!)

List<Student> list = new ArrayList<>(); 

    list.add(new Student("한조", 80, 99));
    list.add(new Student("트레", 10, 45));
    list.add(new Student("티모", 8, 50));
    list.add(new Student("다리우스", 73, 100));
    list.add(new Student("스웨인", 45, 74));

    list.stream()
            .filter(e -> e.getAge() < 70)
            .forEach(e -> System.out.println(e.getName()));
            
	// 이런식으로 조건을 붙이면서 프로그램 짤 수 있겠지?
   	// =========== student class는 할일 끝났다!  =============

// Student의 리스트를 다음으로 넘기기 전에, StudentEntity의 리스트로 변환해서 넘겨야 함!@!!!

 

## 정석

// 1. StudentEntity리스트틀 만들고
List<StudentEntity> seList = new ArrayList<>();


// 2. Student의 리스트의 값을 Entity로 복사해야지
for(Student student : list) {

    StudentEntity se = new StudentEntity();
    se.setName(student.getName());
    se.setAge(student.getAge());
    se.setScore(student.getScore());
    se.setAs(student.getAge() + student.getScore());

    seList.add(se);		// 2-1. 복사한 값들을 seList로 넣어!
}

 

 ## map 메서드:
// --> 스트림의 각 요소를 지정된 함수 또는 람다식을 사용하여 변환하고, 변환된 요소로 이루어진 새로운 스트림을 반환


# map 메서드를 사용하여 스트림의 요소를 변환하는 과정:
//
// 1. list.stream(): 리스트(list)를 스트림으로 변환합니다.
//
// 2. .map(...): 스트림의 각 요소를 변환하기 위한 map 메서드를 호출합니다.
// --> 이 메서드는 함수 또는 람다식을 인자로 받습니다.
//
// 3. 변환 함수 또는 람다식은 각 요소에 적용되어 새로운 요소로 변환됩니다.
//
// 4.변환된 요소로 이루어진 새로운 스트림을 반환합니다.

 

## 결론:
// map 연산을 사용하면 스트림의 각 요소를 하나씩 처리하며 변환할 수 있습니다.
// 이를 통해 요소를 수정하거나 새로운 형태로 변환할 수 있다!@!!

 

 

## map활용

// 7. List<StudentEntity> seList 수집한걸 여기에 넣으면 끝~!!
List<StudentEntity> seList = list.stream()		// 1. 지금 list는 student의 list임
    .map(e -> {						// 2. map이 list의 각요소를 돌거고
        StudentEntity se = new StudentEntity(		// 3. entity생성자에 정보를 입력해야겠지?
                e.getName(),					
                // 4. 그 정보는 e가 돌고있는 list의 name을 가져오면 되겠지
                e.getAge(),							
                e.getScore(),
                e.getAge() + e.getScore()
                );
        return se;		
        // 5.그리고 반환해. 그럼 생성한 se에 student의 리스트 내용이 다 복사됐지?

    })
    .collect(Collectors.toList())		// 6. 변환된 요소를 리스트로 수집해서
    ;

# 해석:
// map 연산은 주어진 리스트의 각 요소를 StudentEntity 객체로 변환하고,
// collect(Collectors.toList())를 사용하여 변환된 요소를 리스트로 수집합니다.
// 이렇게 수집된 리스트는 seList 변수에 저장됩니다.

 

'JAVA > DAY 20 _ 23.09.13' 카테고리의 다른 글

File I/O _ load  (0) 2023.09.13
File I/O Basic  (0) 2023.09.13
IntStream  (0) 2023.09.13
Stream_API  (0) 2023.09.13
Lambda5_consumer(interface)  (0) 2023.09.13