[Java] Steam의 filter 예제

목표 : 특정 리스트에서 해당값에 해당하는 객체 가져오기

테스트 : 객체에서 아반떼라는 name을 가진 객체를 찾아서 담기

package org.kyhslam;

import java.util.*;
import java.util.stream.Stream;

public class StreamMap {

    public static class Car {
        String name;
        int price;
        String keyword;

        public Car(String name, int price, String keyword) {
            this.name = name;
            this.price = price;
            this.keyword = keyword;
        }
    }

    public static void main(String[] args) {

        ArrayList<Car> list = new ArrayList<Car>();
        list.add(new Car("아반떼", 1500, "아"));
        list.add(new Car("아반떼", 3000, "아"));
        list.add(new Car("테슬라", 6000, "테"));
        list.add(new Car("그랜저", 3000, "그"));

        Stream<Car> fList = list.stream().filter(x -> x.name.equals("아반떼"));
        fList.forEach(c -> System.out.println(c.name + ":" + c.price));

    }
}

아반떼:1500
아반떼:3000

결과

아반떼:1500
아반떼:3000

 

기타

Optional<Car> opCar = list.stream().filter(x -> x.name.equals("아반떼")).findAny();
System.out.println("opCar = " + opCar);
opCar.stream().forEach(s -> System.out.println(s.name + " : " + s.price));

결과

근데 2개가 아니라 처음찾은 객체만 가져온다.

아반떼 : 1500

댓글

Designed by JB FACTORY