Day7 자바 문법 (3)

정채림·2026년 1월 9일

제너릭

  • 타입을 미리 지정하지 않고 사용 시점에서 유연하게 결정할 수 있는 문법

  • 제너릭 클래스 : 클래스 선언 시 <T> 타입 매개 변수를 사용해 다양한 데이터 타입을 안전하게 처리할 수 있음

  • 제너리 ㄱ메서드 - 위와는 별개로 독립적인 타입 매개 변수를 가진 메서드

  • 제너릭을 사용하면 높은 타입 안정성과 재사용성을 얻을 수 있음

ex) 제너릭 클래스

Optional<T>
ArrayList<T>

스트림

  • 데이터를 효율적으로 처리할 수 있는 흐름
  • 선언형 스타일로 가독성이 뛰어남
  • 데이터 준비 -> 중간연산 -> 최종연산 순으로 처리 됨
단계설명주요 API
1. 데이터 준비컬렉션을 스트림으로 변환stream(), parallelStream()
2. 중간 연산 등록 (즉시 실행되지 않음)데이터 변환 및 필터링map(), filter(), sorted()
3. 최종 연산최종 처리 및 데이터 변환collect(), forEach(), count()
arrayList
.stream() //데이터준비
.map() //중간 연산 등록
.collect() //최종연산
  • 람다식과 함께 활용하여 훨씬 간결한 코드를 작성할 수 있음.
public class Main {

    public static void main(String[] args) {
        List<Integer> arr = new ArrayList<>(List.of(1, 2, 3, 4, 5));

        // filter: 익명 객체로 구현
        Predicate<Integer> predicate = new Predicate<>() {
            @Override
            public boolean test(Integer integer) {
                return  (integer % 2) == 0;
            }
        };

        // filter: 람다로 구현
        Predicate<Integer> predicateLambda = integer ->  (integer % 2) == 0;

        // filter 활용
        List<Integer> filteredArr = arr.stream()
                .filter(integer -> integer % 2 == 0)
                .collect(Collectors.toList());

        System.out.println("filteredArr = " + filteredArr);
    }
}

0개의 댓글