스트림(Stream API) 활용기

스트림을 활용하면 얼마나 코드가 짧아지는가.
그간 배우기를 두려워하면서 람다만 나오면 뒤로 주춤하던 내모습
조금은 더 친숙해 지도록 노력이 필요할 것같다.

기존 사용 내역

 public String randomNumberCreate() {
        List<Integer> computer = new ArrayList<>();
        while (computer.size() < 3) {
            int randomNumber = Randoms.pickNumberInRange(1, 9);
            if (!computer.contains(randomNumber)) {
                computer.add(randomNumber);
            }
        }

        StringBuilder stringBuilder = new StringBuilder(3);
        for (Integer i : computer) {
            stringBuilder.append(i);
        }

        return stringBuilder.toString();
    }    
  • 랜덤 숫자 3종류를 받아 ArrayList에 저장한다
  • 빌더를 생성하여 arraytList에 생성된 자료를 저장한다
  • 그리고 빌더를 리턴한다.

Stream을 이용해보자

return Stream.generate(() -> Randoms.pickNumberInRange(1, 9)) // 1~9의 숫자의 랜덤 숫자를 배분한다
                .distinct()// 중복을 제거 해준다
                .limit(3)//3개까지만 생성해준다
                .map(Object::toString) // Integer -> String 변환
                .collect(Collectors.joining()); // 값을 붙여준다. -> 최종

스트림을 활용하면 보다 함수 스타일로, 간결하게 표현할 수 있음을 알 수 있다.

혹시 더 Stream에 대해 더 공부하고 싶다면 [모던 자바 인 액션]이라는 책을 추천한다.

끝.

+ Recent posts