KIC/JAVA

day31 - JAVA (자바, 스트림, 플랫맵, 필터)

바차 2021. 7. 27. 15:30
반응형

[stream Ex]

package javaPro.java_Stream;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Stream;

public class StreamEx0 {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("홍길동", "김삿갓", "이몽룡", "성춘향");
        System.out.println("외부 반복자 사용");
        Iterator it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

        System.out.println("내부 반복자 사용");
        //list.stream().forEach(s -> System.out.println(s));
        Stream<String> st = list.stream(); // List 객체를 Stream 객체 변환
        st.forEach(s -> System.out.println(s));

        System.out.println("다시 출력");
        list.stream().forEach(s -> System.out.println(s));

    }

}

 

 

 

[FlatMap Ex]

package javaPro.java_Stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class FlatMapEx2 {
	public static void main(String[] args) {
		List<Student> studentList1 = Arrays.asList(
				new Student("홍길동", 10),new Student("강나라", 20),
				new Student("장일동", 30)	);
		List<Student> studentList2 = Arrays.asList(
				new Student("나자바", 10),new Student("신용권", 20),
				new Student("유미선", 30)	);
		
		
		List<List<Student>> stu = new ArrayList<List<Student>>();
		         stu.add(studentList1);
		         stu.add(studentList2);
		long sum= stu.stream()
  //		.flatMap(s -> s.stream())
			.flatMap(List::stream)
		
	//		.mapToInt(Student :: getScore)
			.mapToInt(s -> s.getScore())
			.count();
		      System.out.println(sum);
			//.forEach(score -> System.out.println(score));
	}
}

 

 

 

 

[필터 ex]

package javaPro.java_Stream;

import java.util.Arrays;
import java.util.List;

class Member {
    public static int MALE = 0;
    public static int FEMALE = 1;
    private String name;
    private int sex;
    private int age;

    public Member(String name, int sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public int getSex() {
        return sex;
    }

    public int getAge() {
        return age;
    }
}

public class FilterEx4 {
    public static void main(String[] args) {
        List<Member> list = Arrays.asList(new Member("홍길동", Member.MALE, 30), new Member("김나리", Member.FEMALE, 20),
                new Member("신용권", Member.MALE, 45), new Member("박수미", Member.FEMALE, 27));

        double ageAvg = list.stream().filter(m -> m.getSex() == Member.MALE).mapToInt(s -> s.getAge()).average()
                .getAsDouble();
        System.out.println("남자 평균 나이: " + ageAvg);
    }
}
300x250