JavaScript Object과 Map의 공통점과 차이 JavaScript의 Map과 Object는 Key-Value 쌍으로 동작한다는 점에서는 비슷하지만 다른 점이 많다. 공부하면서 이 부분이 많이 헷갈려서 이번 글에서는 이 둘의 차이가 무엇인지에 대해 다뤄보고 어떤 때 Object를 써야 하고 어떤 때 Map을 써야하는지 살펴보고자 한다. Object과 Map의 공통점 Map과 Object의 값에 접근하기 위한 시간 복잡도 먼저 내가 제일 궁금했던 점은 Map과 Object의 값에 접근하기 위해서는 Key를 사용해야 하는데 이때 시간 복잡도가 다른가 하는 점이었다. 알아본 결과 N개의 원소가 있는 Map과 Object의 값의 접근을 위한 시간 복잡도는 O(1)로 같다. 물론 해싱 값이 모두 같은 값..
map
JavaScript의 Map 데이터 구조와 의의 JavaScript의 Map 데이터 구조는 키-값(Key-Value) 쌍을 가진 데이터 구조이다. Map 데이터 구조는 키 생성 시 키에 대해 해싱을 사용해서 키의 해시값의 중복이 되지 않는 이상 Value에 접근하기 위해 O(1)의 복잡도를 가질 수 있다는 점에서 프로그램의 최적화를 위해 많이 쓰인다. 또한 키의 해시값이 중복이 되더라도 중복인 대상 K개에 대해서만 O(K)의 복잡도를 가지기 때문에 값 접근을 위한 시간을 매우 낮출 수 있다. 이 때문에 대부분 언어들에서는 무조건 Map 데이터 구조를 지원하고 있다. 가끔 Map 대신 Dictionary로 쓰는 Swift 같은 언어가 있기는 하지만, JavaScript, Java, Kotlin 등의 언어들..
목차로 돌아가기 [Kotlin Collection] Kotlin에서 확장함수를 이용해 Collection 조작하기 목표 Collection 확장함수가 하는 일을 이해한다. 자유롭게 확장 함수를 이용해 데이터를 조작한다. 개요 Kotlin에서는 일반 컬렉션에도 함수형 프로그래밍을 위한 확장 함수를 제공하여, 데이터를 kotlinworld.com 목표 변환함수의 개념을 익히고, map과 flatMap의 차이점을 익힌다. map을 사용하는 방법을 익힌다. flatMap을 사용하는 방법을 익힌다. 확장함수 목록 map map는 Collection을 다른 형태로 변환해주기 위해 사용한다. map : map은 인자로 받은 transform function을 통해 기존 Collection을 변형시킨 List를 ret..
목표 ViewModel이 저장 및 호출되는 방법에 대해 간략하게 이해한다. 이 글은 자바 및 안드로이드에 대한 많은 이해가 필요하므로, 이해가 안가면 3번 글로 넘어가도 무방하다. ViewModelProvider을 이용한 초기화 ViewModel 인스턴스를 만들기 위해서는 ViewModelProvider을 사용해야 한다. 가장 기본적인 ViewModel을 초기화 하는 방법을 다룬 아래 코드를 살펴보도록 하자. class MainActivity : AppCompatActivity(), View.OnClickListener { val viewModel = ViewModelProvider(this@MainActivity).get(MainViewModel::class.java) .. } 앞에 1장에서 배웠듯이 ..