sean.jin
Spark Code Blog
sean.jin
전체 방문자
오늘
어제
  • 분류 전체보기
    • 개발공부
      • Kotlin
      • LeetCode
      • Algorithm
      • React
    • 주식차트
    • 책리뷰
    • 유틸리티

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 아빠와 딸의 주식투자 레슨
  • 주식투자
  • 경제
  • 부의 추월차선
  • 오
  • 책리뷰
  • 초보
  • 주식책리뷰
  • 책추천
  • 트리플 위칭데이
  • 네마녀의날
  • 주식입문자
  • 쿼드러플위칭데이
  • 책
  • 자기개발
  • 변동성

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sean.jin

Spark Code Blog

[Kotlin] Collection 정리 list, set, map 차이 - HashMap, hashmapof, mutableMap, setOf, mutableSetOf,ArrayListof,listof 사용법 및 차이
개발공부/Kotlin

[Kotlin] Collection 정리 list, set, map 차이 - HashMap, hashmapof, mutableMap, setOf, mutableSetOf,ArrayListof,listof 사용법 및 차이

2021. 6. 10. 14:30
반응형

 

[Kotlin] Collection 정리 list, set, map 차이 - HashMap, HashMapOf, MutableMap, SetOf, MutableSetOf, ArrayListof, ListOf

 

  • HashMap, hashmapof, mutableMap, setOf, mutableSetOf, ArrayListof, listof 들의 공통점은 모두 Collection이라는 점입니다. 
  • collection은 데이터를 모아 관리와 사용을 편리하게 하기 위해 만들어진 프레임워크입니다. 
  • Collection들을 이해하기 전 Collection을 구분 짓는 법부터 알아야 합니다. 

  • 코틀린은 크게 변경 가능한(Mutable), 변경 불가능한(Immutable) Collection으로 나눕니다. 
  • 그리고 그아래 List Map Set 3가지 가있습니다. 이 셋의 차이를 먼저 알아보겠습니다. 

 

List, Map, Set 차이

 

List

  • list는 Array같이 안에 값이 있는 리스트입니다. 아래는 list사용 예입니다.  
  • 아래와 같이 list안에 string이나 Int가 들어갈 수 있고 ListOf를 쓰면 읽기만 가능한 array가 만들어지고
  • arraylistOf로 만들어주면 편집이 가능해집니다.
//변경 불가능
val names = listOf("Sean","John") //읽기만 가능합니다.

//변경 가능
val names = arraylistOf("Sean","John","James")
names.add("Tom") // 이렇게 추가할수있습니다.

Map

  • Map은 data structure중의 하나로 key-value 두 개로 구성된 페어로 나타낼 수 있는 collection입니다. 아래는 사용 예제입니다.
  • Key와 value값으로 데이터가 이루어져 있기는데 만약 Key Value값 둘 다 같은 값이 있다면 어떻게 될까요?
  • 불가능합니다. Map에서는 key는 중복될 수 없고 value는 중복될 수 있습니다. eg. "hi" to 26, "bye" to 26"와 같이 value가 중복될 수는 있습니다. 
//변경불가능한 map 사용 예제 - 사이즈가 변할수없고 읽기만 가능합니다.
fun main(){
		//map은 "key" to value 형식으로 데이터를 저장합니다.
		val ageMapper = mapOf("himanshu" to 26, "john" to 30) //이제부터 변경 불가능합니다.
			println(ageMapper[himanshu]) //ageMapper안에 이름을 써주면 vale값인 26을 리턴합니다.
			println(ageMapper.size) //2를 리턴합니다.
			
			ageMapper.put //read only기 때문에 map에 추가할수없습니다.
	
		//변경 가능한 맵의 사용 예제
		val newAgeMapper = mutuableMapOf("himanshu" to 26, "john" to 30)
			newAgeMapper.put("Doe", 35) //이렇게하면 Doe가 추가되게됩니다.
	
			newAgeMapper.clear() //newAgeMapper안에있는 모든 값을 삭제합니다.
			newAgeMapper.remove("himanshu") // "himanshu"라는 키값을 가진 것을 제거해줍니다.
			
			//get하고 없으면 default가져오기
			println(newAgeMapper.getOrDefault("Kasdfadf",-1)) //Kasdfadf가있는지확인하고 없으면 -1을 default값으로 가져옵니다.
	
			//read
			//값이있는지 없는지 확인할수있습니다. 
			println(newAgeMapper.containsKey("himanshu")) //true
			println(newAgeMapper.containsValue(30))// true
	
			println(newAgeMapper.filter{
					it.key == "himanshu" || it.value == 30 //  himanshu라는 키를 가지고있거나, value로 30일 가지고있는 아이템을 리턴합니다. {himanshu = 26, john = 30}	
			})
	
			println(newAgeMapper.filterKeys{
					it == "himanshu" //himanshu를 key로 가지고있는값을 찾습니다.
			})
			
			println(newAgeMapper.filterValues{
					it == 30 //30을 value로 가진 값을 찾습니다.
			})
	
			//sorting
			newAgeMapper.toSortedMap() // key값을 순서대로 재배열합니다. 알파벳이나 숫자 차례대로 재배치합니다.  
	    


		

}

Set

  • List와 달리 중복을 허용하지 않으며, 순차적이지 않은 집합입니다. 
val set1 = setOf<Int>(3,3,1,2)
println(set1) // [3,1,2]가 나옵니다. 

 

Collection 구성

 

변경 불가능한 데이터 (Immutable Collections) 

변경 불가능한 데이터 (Immutable collections)
Read-Only
구성
Immutable list listOf
Immutable map mapOf
Immutable set setOf
  • 위에서 이 3가지는 모두 예시로 이용해보았기 때문에 부가 설명을 스킵하겠습니다.

변경 가능한 데이터 (Mutable Collections)

변경 가능한 데이터(Mutable collections)
Read and Write
구성
Mutable list ArrayListOf, ArrayList,  mutableListOf
Mutable map MutableMapOf, HashMap, HashMapOf
Mutable set MutuableSetOf, HashSetOf
  • 초록색 위에 예시로 다뤄본 내용
  • 빨간색 다뤄보지 않은 내용

 

Mutable List

  • ArrayList: ArrayList는 ArrayListOf와 같습니다. 코드로 설명하자면 쓰는 방식이 다를 뿐 둘은 같은 코드입니다.
  • Kotlin 공홈에 가보면, ArrayList는 MutableList 인터페이스를 상속받은 구현체라고 설명돼있습니다.
public inline fun <T> arrayListOf(): ArrayList<T> = ArrayList()
  • mutableListOf: 이 또한 ArrayListOf와 같습니다. 이 세 가지 모드 mutable List를 만들기 위한 방법입니다. 

Mutable Map

  • MutableMapOf, HashMap, HashMapOf는 모두 같은 기능입니다.
  • HashMap은 MutableMap 인터페이스를 상속받은 구현체입니다. 
  • HashMap 사용 예제를 살펴보겠습니다.
val hashMap:HashMap<Int,String> = HashMap<Int,String>() //빈 hashMap을 생성해준후
        hashMap.put(1,"Ajay") //이렇게 추가할수있습니다.
        hashMap.put(3,"Vijay")
        hashMap.put(4,"Praveen")
        hashMap.put(2,"Ajay")

Mutable Set

  • MutableSetOf, HashSetOf 둘은 같은 기능입니다. 
  • HashSetOf도 MutableSetOf 인터페이스를 상속받은 구현체입니다. 

 

이렇게 변경가능한지 변경불가능한지 구별하고, list, set, map을 구별하면 어떤 Collection을 이해하는데 도움이 될것입니다. 

 

반응형

'개발공부 > Kotlin' 카테고리의 다른 글

[Kotlin] 코루틴 Coroutine 사용법 - runBlocking 사용법 및 예제 - 2편  (0) 2021.06.12
[Kotlin] 코루틴 Coroutine 사용법 및 개념 정리 - GlobalScope, GlobalScope.launch, Delay, Dispatcher, Coroutine Context - 1편  (1) 2021.06.11
[Kotlin] Google AdMob 앱 수익창출 - 광고 달기 배너달기 / 버튼클릭시 전면광고  (0) 2021.06.03
[Kotlin] Material Design Date Picker - 날짜 선택기 사용법, 특정 구간날짜 비활성화  (0) 2021.05.31
[Kotlin] RecyclerView에 LiveData/ViewModel 적용하기 - 화면전환후 데이터유지 - RecyclerView 3  (0) 2021.05.29
    '개발공부/Kotlin' 카테고리의 다른 글
    • [Kotlin] 코루틴 Coroutine 사용법 - runBlocking 사용법 및 예제 - 2편
    • [Kotlin] 코루틴 Coroutine 사용법 및 개념 정리 - GlobalScope, GlobalScope.launch, Delay, Dispatcher, Coroutine Context - 1편
    • [Kotlin] Google AdMob 앱 수익창출 - 광고 달기 배너달기 / 버튼클릭시 전면광고
    • [Kotlin] Material Design Date Picker - 날짜 선택기 사용법, 특정 구간날짜 비활성화
    sean.jin
    sean.jin
    앱개발, 알고리즘, JS, Kotlin, 미국 취업준비

    티스토리툴바