본문 바로가기

Java/예제

Stream 예제

Array를 Stream으로 변환

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

public class Main {
    public static void main(String[] args) {
        String[] arr = {"국어", "수학",
                "영어", "과학"};
        Stream<String> stringStream = Arrays.stream(arr);
        stringStream.forEach(className -> System.out.println("수업명 : " + className));
        System.out.println();
    }
}

수업명 : className의 형태로 배열의 값들이 출력됨

 

map연산 활용

build.gradle의 dependencies 코드 블럭에 library를 추가

dependencies {
	implementation 'org.apache.commons:commons-lang3:3.0'
}
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

import org.apache.commons.lang3.tuple.Pair;

class Sale {
    String fruitName;
    int price;
    float discount;

    public Sale(String fruitName, int price, float discount) {
        this.fruitName = fruitName;
        this.price = price;
        this.discount = discount;
    }
}

public class Main {
    public static void main(String[] args) {
        List<Sale> saleList = Arrays.asList(
                new Sale("Apple", 5000, 0.05f),
                new Sale("Grape", 3000, 0.1f),
                new Sale("Orange", 4000, 0.2f),
                new Sale("Tangerine", 2000, 0)
        );

        Stream<Sale> saleStream = saleList.stream();
        saleStream.map(sale -> Pair.of(sale.fruitName, sale.price * (1 - sale.discount)))
                .forEach(pair -> System.out.println(pair.getLeft() + " 실 구매가:  " + pair.getRight() + "원 "));
    }
}

가격에 할인이 적용된 상태로 출력

 

reduce를 이용한 계산

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

public class Main {
    public static void main(String[] args) {
        List<Integer> numArr = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        Integer result = numArr.stream().reduce(0, Integer::sum);
        //reduce와 sum을 활용하여 1부터 10까지 더하게 됩니다.
        System.out.println(result);
    }
}

1부터 10까지 모든 수를 더한 값(55)이 출력

'Java > 예제' 카테고리의 다른 글

계산기 만들기  (0) 2022.11.20
객체지향 강의 예제 - 1  (0) 2022.11.18
리스트 - ArrayDeque  (0) 2022.11.16
컬렉션 - Queue  (0) 2022.11.16
컬렉션 - Stack  (0) 2022.11.16