[Kotlin-Collection] mutableList/Set/Map/immutable Collection
mutable Collection interface
kotlin.collections MutableList interface MutableList< E > : List< E >, MutableCollection< E > MutableSet interface MutableSet< E > : Set< E >, MutableCollection< E > MutableMap interface MutableMap<K, V> : Map<K, V> mutable Collection function
kotlin.collections mutableListof fun < T > mutableListOf( / vararg elements: T): MutableList< T >=ArrayList() mutableSetof fun < T > mutableSetOf( / vararg elements: T): MutableSet< T > mutableMapof fun <K, V> mutableMapOf( /vararg pairs: Pair<K, V>): MutableMap<K, V>
kotlin.collections | |
---|---|
MutableList | interface MutableList< E > : List< E >, MutableCollection< E > |
ArrayList | class ArrayList< E > : MutableList< E >, RandomAccess |
mutableListof | fun < T > mutableListOf( / vararg elements: T): MutableList< T >=ArrayList() |
arrayListOf | fun < T > arrayListOf(): ArrayList< T > = ArrayList()=ArrayList() |
MutableList와 ArrayList의 차이
- MutableList = 추가, 삭제 등 수정이 가능한 리스트
- ArrayList = 내부에 Array로 구현되어 있는 추가, 삭제 등 수정이 가능한 리스트
- 즉, ArrayList는 MutableList 중에서도 ArrayList를 사용하겠다 라고 명시한 것이고 MutableList는 Mutable한 List를 사용하겠다 라는 의미이다
- 그러나 현재 Kotlin에서는 mutableList나 arrayListOf나 둘 다 ArrayList를 반환한다.
1.mutableListOf
- fun < T > mutableListOf( ): MutableList< T >
var list2 = mutableListOf<String>() //빈 리스트 생성시에는 지네릭 생략 불가
- fun < T > mutableListOf(vararg elements: T): MutableList< T >
val list = mutableListOf("1", 2, 3 , 4)
println(list.add(5)) //배열 마지막에 5 추가: true리턴
list.add(0, 100) //0번째 인덱스에 100추가
list.set(1, 200) //1번 인덱스 값 200으로 바꿈
println(list.contains(200)) //200 포함? :true 리턴
println(list.isEmpty()) //빈 배열임?: false
println(list.size) //*자바랑 다르다!!!!!!
println(list.get(0)) //0번째 인덱스 값 줌: 100
println(list.indexOf(100)) //100의 인덱스 번호 리턴: 0
//list.clear() 값 싹다 지우는거 가능
list.remove(100) //해당 객체 지우기
list.remove(387647) //없는 값을 삭제하려해도 오류 발생 안함
list.removeAt(0) //*해당 인덱스 객체 삭제 자바 컬렉션은 remove인자로 인덱스,객체 둘다 받았는데 다르네!
println(list) //자바랑 마찬가지로 배열은 참조 번지 출력되는데 얘는 배열 값들 출력되는군
for (item in list) { //향상된 for문
println(item)
}
add(value) : 기존 컬렉션 뒤에 값을 하나 더 추가한다
addAll(collection) : 기존 컬렉션 뒤에 컬렉션 값을 더 추가한다
remove(value) : 해당 값을 찾아 하나 삭제한다. 이 때, 컬렉션의 가장 앞의 값을 먼저 제거한다.
removeAll(collection) : 해당 컬렉션에 포함된 값을 '전부' 삭제한다.
retainAll(collection) : 해당 컬렉션에 포함된 값을 제외하고 전부 삭제한다.
clear() : 컬렉션 내부 값을 모두 삭제한다.
fun main() {
val list : MutableCollection<Int> = mutableListOf(1,2,4,2,3,2,5)
println("list : $list")
list.add(1)
println("add : $list")
list.addAll(listOf(2,3,4))
println("addAll : $list")
list.remove(1)
println("remove : $list")
list.removeAll(listOf(2,3))
println("removeAll : $list")
list.retainAll(listOf(4,5))
println("retainAll : $list")
list.clear()
println("clear : $list")
}
list : [1, 2, 4, 2, 3, 2, 5]
add : [1, 2, 4, 2, 3, 2, 5, 1]
addAll : [1, 2, 4, 2, 3, 2, 5, 1, 2, 3, 4]
remove : [2, 4, 2, 3, 2, 5, 1, 2, 3, 4]
removeAll : [4, 5, 1, 4]
retainAll : [4, 5, 4]
clear : []
2.mutableSetOf
- fun < T > mutableSetOf( ): MutableSet< T >
var list2 = mutableListOf<String>() //빈 리스트 생성시에는 지네릭 생략 불가
- fun < T > mutableSetOf(vararg elements: T): MutableSet< T >
var set = mutableSetOf(1, 2, 3, 4, 4)
println(set) //4출력 안되고
println(set.add(500)) //500추가:true리턴
set.contains(500) //500값으로 잇음?:true리턴
set.isEmpty() //set컬렉션 비어있음?:false
set.size //값 수
//set.clear()
println(set.remove(500))//500 삭제:true리턴
set.remove(56872634) //없는 값 삭제하려해도 오류 발생 안함
for (item in set) {
println(item)
} //향상된 for문으로 꺼내오기
3.mutableMapOf
- fun <K, V> mutableMapOf(): MutableMap<K, V>
var map = mutableMapOf<String, String>()
map.put("1", "김숙")
map.put("2", "전지현")
map.put("1", "김씨네") //값 수정!! set메서드랑 비슷하군
println(map.containsKey("1")) //이 키 있니:true
println(map.containsValue("김숙")) //이 값 있니:true
println(map.get("1")) //이 키인 값 내놔
//map.clear() //전부 다 지움
map.remove("1") //이 키인 값 삭제, 키도 같이 없어지네
map.remove("3535") //없는 키 삭제하려 해도 오류 발생 안함
map.replace("2", "배고파") //*해당 키 값을 해당 값으로 바꿈, import필요
println(map.keys) //*키 다 내놔
println(map.values) //*값 다 내놔
- fun <K, V> mutableMapOf(vararg pairs: Pair<K, V>): MutableMap<K, V>
val map2 = mutableMapOf(1 to 2, 2 to 3, 3 to 4)
println(map2)
for (item in map) { //향상된 for문으로 출력
println(item)
immutable Collection interface
kotlin.collections List interface List< out E > : Collection< E > Set interface Set< out E > : Collection< E > Map interface Map<K, out V> immutable Collection function
kotlin.collections listOf fun < T > listOf( /vararg elements: T): List< T > setOf fun < T > setOf( /vararg elements: T): Set< T > mapOf fun <K, V> mapOf( /vararg pairs: Pair<K, V>): Map<K, V>
- 읽기 전용 이뮤터블 컬렉션:값을 변경할수 없음,교체/삭제/추가 불가
- 자바의 읽기전용 list랑 비슷한듯: List aslist=new ArrayList(list2.subList(0,3));
- 입력된 값을 get()으로 사용만 가능
- val로 선언하고 변수명은 대문자로 선언
val DAY_LIST = listOf("월", "화", "수")
val DAY_LIST2 = listOf<Int>(1, 2, 3, 4)
DAY_LIST.get(0)
val setmu = setOf<Int>(1, 2, 3, 3, 3)
val mapmu = mapOf<Int, Int>()
참고https://zladnrms.tistory.com/140
Author And Source
이 문제에 관하여([Kotlin-Collection] mutableList/Set/Map/immutable Collection), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dabin/Kotlin-Collection-mutableListSetMapimmutable-Collection저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)