Map 인터페이스에서 Java 8 버전에 추가된 일부 API에 대해 살펴봅니다. putIfAbsent() compute() computeIfPresent() computeIfAbsent() getOrDefault() 해당 코드는 Map 인터페이스의 구현체인 HashMap을 기준으로 정리하였습니다. 1. putIfAbsent(K key, V value) Map - putIfAbsent() putIfAbsent() 메서드는 네이밍에서 유추할 수 있듯이, 다음과 같이 동작합니다. Key가 존재할 경우: Value 변경 없이 기존에 존재하는 Key의 Value를 리턴합니다. Key가 존재하지 않는 경우: Key에 해당하는 Value를 저장한 후 null을 리턴합니다. HashMap - putIfAbsent() ..
stream
Flutter는 앱 데이터의 상태 관리를 위해 Bloc과 Cubit을 제공한다. Cubit은 Bloc의 6.0.0 버전부터 새롭게 제공된 Bloc의 경량화 버전이다. Bloc 호출 이벤트 및 상태 변경이 모두 Stream이다. 모든 과정이 Stream이기 때문에 Event sourcing을 할 수 있다. UI가 Bloc에 events를 보낸다. 호출 이벤트가 Stream이기 때문에 가능한 기능들이 추가되지만 보일러 플레이트가 상당하다. class CityBloc extends Bloc { CityBloc() : super(City()){ on( generateCity, transformer: debounce(const Duration(milliseconds: 300)) ); } FutureOr gener..