코딩

JAVA - Stream 예제

Bullseye 불새 2022. 10. 6. 14:57
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;


class Bonbu {
    String name;
    int numberOfSite;
    int revenue;

    public Bonbu(String name, int numberOfSite, int revenue) {
        this.name = name;
        this.numberOfSite = numberOfSite;
        this.revenue = revenue;
    }

    String getName() {
        return this.name;
    }

    int getNumberOfSite() {
        return this.numberOfSite;
    }

    int getRevenue() {
        return this.revenue;
    }

    @Override
    public String toString() {
        return name + " - number of site : "+ numberOfSite +" - revenue: "+revenue;
    }
}

public class Sample {
    public static void main(String[] args) {
        List<Bonbu> bonbus = new ArrayList<>(Arrays.asList(
                new Bonbu("tomo", 100, 200),
                new Bonbu("kucu", 300, 700),
                new Bonbu("plnt", 50, 1000),
                new Bonbu("zoki", 60, 1000)
        ));

        List<Bonbu> result = bonbus.stream()
                .filter(x->x.revenue>300)
                .sorted(Comparator
                        .comparing(Bonbu::getRevenue)
                        .thenComparing(Bonbu::getNumberOfSite).reversed()
                )
                .collect(Collectors.toList());

        result.forEach(System.out::println);
    }
}

JAVA에서도 Python의 판다스처럼 사용할 수 있는 스타일이 있군요.

Dart에도 이와 유사한(모사한) 방식이 있습니다.