inflearn logo
강의

Course

Instructor

[2023 Free Kotlin Lecture] Android Programming A-Z, from Basics to Profit Generation

Collection (3) - Map

mutable과 var의 차이점

201

junhyunpark3058187

5 asked

0

컬렉션 부분을 배우면서 한가지 이상한 점이 생겨서 질문드립니다.

 

강의 초반 var / val의 차이점을 알려주시면서 읽기, 쓰기 가능 혹은 읽기만 가능 이라고 알려주셨는데 val로 List을 만들면 당연히 각각의 변수의 값을 바꿀 수 없는 거 아닌가 싶어서요

또, val로 만든 List가 mutable을 붙이면 값이 변화할수 있다는게 조금 이해가 되지 않습니다

추정을 조금 해보자면 List을 만들면 List자체가 하나의 변수가 되어 val { } 안에 들어있는 값을 읽어오고 그 값을 List에 새롭게 저장하는 방식인가요? 만약에 그런 방식이 아니라면 이해가 되지 않는 부분입니다

반대로 생각하면 var로 선언한 변수들로 immutableList를 만들었을때 값이 변화가 안되는건가요?

android kotlin 클론코딩

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

varval의 차이는 변수의 재할당 가능 여부와 관련이 있습니다. var는 변수에 새로운 값을 재할당할 수 있지만, val는 초기에 할당된 값을 변경할 수 없습니다(읽기 전용).

컬렉션의 경우, val로 선언된 컬렉션은 컬렉션 자체를 재할당할 수 없습니다. 하지만 이것은 컬렉션이 가지고 있는 요소의 값을 변경할 수 없다는 의미는 아닙니다. 여기서 mutableimmutable 컬렉션의 차이점이 중요합니다.

  • Immutable 컬렉션(e.g., listOf(), mapOf())은 생성 후에 그 내용을 변경할 수 없습니다. 즉, 요소를 추가하거나 제거할 수 없습니다.
  • Mutable 컬렉션(e.g., mutableListOf(), mutableMapOf())은 생성 후에도 요소를 추가하거나 삭제할 수 있습니다.

val로 선언된 List가 mutable일 경우, List를 재할당할 수는 없지만, List 내부의 요소를 수정할 수 있습니다(예: 요소 추가, 삭제). 반면에, immutable List를 사용하면 처음 생성할 때 지정한 요소를 변경할 수 없습니다.

var로 선언된 변수에 immutable 컬렉션을 할당하면, 변수에 다른 컬렉션을 재할당할 수는 있지만, 할당된 immutable 컬렉션의 요소를 변경할 수는 없습니다. 이 경우 변수를 다른 컬렉션으로 변경할 수 있어도, 할당된 컬렉션 자체의 변경은 불가능합니다.

즉, var/val은 변수의 재할당 가능성과 관련이 있고, mutable/immutable은 해당 컬렉션이 요소의 변경을 허용하는지에 대한 특성입니다.

안드로이드스튜디오 버전이 어떻게 되는지요?

0

106

1

스크래치 파일 Run 안되는 오류 발생

0

134

1

Git에서 다운받은 폴더가 안열리는 분들

0

136

1

TodoDao Interface 문의

0

78

1

kotlin 버전과 ksp 버전 꼭 맞추셔야 해요!!

0

450

1

아름다운 joyce님께.. runonuithread 문의

0

139

0

viewBinding 관련 질문입니다.

0

206

3

0:30초 질문입니다.

0

179

1

Locationmanager로 타입캐스팅 실패 문의

0

140

1

Todo리스트 dao 구성 시 todo 질문

0

140

1

룸 데이터베이스 구성 시 dao 에러 문의

0

171

1

버튼모양 질문 소스코드 첨부

0

146

1

레이아웃 구성할떄 저는 버튼모양이 원으로 나와요

0

169

1

싱글톤 패턴 구현중 코드가 강의와 일치하지 않습니다.

0

156

1

MainActivity 파일안에 setContencView가 없습니다..

0

202

1

room database 설치 질문

0

174

1

kts로 공부하는 학생도 있는데 갑자기 설명도 없이 kt로 설명하면..

0

314

3

안드로이드 스튜디오 스크래치 파일

0

277

1

추가링크는 어디에 있을까요?

0

285

1

대시보드 설정 마지막 단계 Google Play에 앱 게시

0

678

2

geoCoder.getFromLocation 에러

0

554

2

apirequest.io 로딩 현상 & 사이트 이상함

0

451

1

PrimaryKey를 Nullable하게 만드는 이유

0

268

1

개인정보처리방침에 대한 질문

0

233

1