본문 바로가기

오늘의 공부 & 기록

스프링 강의와 HashMap, 스트림 복습

자바의 정석 1회독을 끝내고 스프링도 다시 기본부터 잡기위해 들었던 강의를 다시 듣기 시작했다.

코딩 테스트와 스프링 강의 들으면서 자바의 정석 발췌독 하는 방법으로 공부할 예정!

 

 

- 스프링 강의 리포지토리를 직접 구현하는 부분

- 자바 복습하기 좋을 것 같아서 정리

 

private static Map<Long, Member> store = new HashMap<>();

@Override
public Optional<Member> findByName(String name) {
    return store.values().stream()
            .filter(member -> member.getName().equals(name))
            .findAny();
}

 

 

1. Map인터페이스

- 키(key)와 값(value)을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스를 구현하는 데 사용됨

- 키는 중복 불가, 값은 중복 허용

- Map인터페이스를 구현한 클래스는 Hashtable, HashMap, LinkedHashMap, SortedMap, TreeMap 등이 있음

- Map인터페이스의 Collection values() 메서드는 Map에 저장된 모든 value 객체를 Collection타입으로 반환함

 

 

2. 스트림(stream)

- 데이터 소스를 추상화하고 데이터를 다루는데 자주 사용되는 메서드를 정의해 놓은 것

- Collection에 stream()메서드로 스트림 생성

- 스트림 중간연산 .filter()로 조건에 맞는 객체를 거름

- 최종연산 Optional<T> findAny()  (병렬일때)스트림의 요소 하나 반환 filter와 같이 쓰임

 

private static Map<Long, Member> store = new HashMap<>();

@Override
public Optional<Member> findByName(String name) {
    return store.values().stream() // Map에 저장된 모든 value 객체를 Collection타입으로 반환, stream()메서드로 스트림 생성
            .filter(member -> member.getName().equals(name)) // 람다식(member를 매개변수로 넣어서 member와 이름이 같은 것을 구하기)필터
            .findAny(); // 필터와 같이 쓰임, 요소 하나 반환
}