Kotlin

List

본이qq 2022. 9. 2. 11:16

< 코틀린의 컬렉션 >

- List : 순서를 통해 관리한다.

- Map : 이름을 통해 관리한다.

- Set : 집합 관리

 

 

-List

  배열과 동일하게 인덱스 번호를 통해 객체를 관리한다.

  배열을 크기가 정해지면 변경할 수 없지만 List는 추가, 삭제 등이 가능하다.

 

- List 의 생성

  listOf : 불변형 리스트 생성

  mutableListOf : 가변형 리스트 생성

  emptyList : 비어있는 불변형 리스트를 생성한다.

  listOfNotNull : null 제외한 나머지만으로 리스트를 생성한다.

 

val list1 = listOf(10,20,30,40,50)
val list2 = listOf( "문자열1", "문자열2", "문자열3")
println("list1 : $list1")
println("list2 : $list2")

 

 

 

 

var list3 = mutableListOf<Int>()  // 가변형이기 때문에 더러는 비어있는 상태로 시작되고 요소들을 추가하여 변경합니다
var list4 = mutableListOf("문자열1", "문자열2", "문자열3")
println("list3 : $list3")
println("list4 : $list4")

 

 

val list5 = emptyList<Int>()
println("list5 : $list5")

 

 

 

 

val list6 = listOfNotNull(10, 20, null, 30, null, 40, 50)
println("list6 : $list6")

 

 

for(item in list1){
    print("$item ")
}
println("\nlist1 size : ${list1.size}")

 

 

 

- 리스트의 값에 접근

  get : 0부터 시작하는 인덱스 번호를 통해 객체를 추출할 수 있습니다.

  Kotlin 리스트는 배열과 동일하게 [ ] 사용할 있습니다

 

println("list1 0 : ${list1.get(0)}")
println("list1 1 : ${list1.get(1)}")
println("list1 2 : ${list1[2]}")
println("list1 3 : ${list1[3]}")

 

 

 

-기타메서드

  indexOf : 지정된 값의 인덱스 번호를 반환한다. 값이 없을 경우 -1을 반환합니다.

  lastIndexOf : 지정된 값이 마지막에 해당하는 값의 인덱스 번호를 반환합니다.

                       값이 없을 경우 -1을 반환합니다.

  subList : 지정된 범위의 값을 추출하여 새로운 리스트를 생성해 반환합니다.

val list7 = listOf(10, 20, 30, 10, 20, 30)
val index1 = list7.indexOf(20)
println("index1 : $index1")
val index2 = list7.lastIndexOf(20)
println("index2 : $index2")

 

 

 

 

 

 

val list8 = list1.subList(1, 3)
println("list8 : $list8")

 

 

 

 

- 가변형 리스트의 메서드

  add(객체) : 객체를 추가합니다.

  add(인덱스, 객체) : 주어진 인덱스 위치에 객체를 삽입합니다.

  remove(객체) : 주어진 객체를 제거합니다

  removeAt(인덱스) : 주어진 인덱스의 객체를 제거합니다.

  set(인덱스, 객체) : 주어진 인덱스에 객체를 덮어씌웁니다.

list3.add(10)
list3.add(20)
list3.add(30)  // 가변 리스트에 요소를 하나씩 추가합니다
list3.addAll(listOf(40, 50, 60))  // 가변 리스트에 요소를 한번에 여러개 추가합니다
println("list3 : $list3")

list3.add(1, 100)  // 특정인덱스에 데이터 추가합니다. 뒤에 요소를 한칸씩 밀립니다
println("list3 : $list3")
list3.addAll(2, listOf(200, 300, 400)) // 특정인덱스에 데이터를 여러개 한번에 추가합니다. 뒤에 요소를 한칸씩 밀립니다
println("list3 : $list3")
list3.remove(100)     // 리스트 요소중 해당 값을 한개 또는 여러개 제거합니다
println("list3 : $list3")
list3.removeAll(listOf(200, 300))
println("list3 : $list3")
list3.removeAt(1)  // 지정한 인데스의 요소를 삭제합니다
println("list3 : $list3")
list3.set(1, 200)  // 지정한 인덱스에  지정한 값으로 수정합니다
println("list3 : $list3")
list3[2] = 300  // 배열처럼 지정한 인덱스에  지정한 값으로 수정합니다
println("list3 : $list3")

 

 

 

 

 

 

-가변형 리스트 -> 불변형 리스트 (toList())

-불변형 리스트 -> 가변형 리스트(toMutableList())

// 불변형 리스트(list1)를 가변형으로 변환
// list1.add(1000)  // 불변형이기때문에 요소 추가는 에러
val list100 = list1.toMutableList() // 불변형 -> 가변형 : 불변형의 변환결과를 다른 참조변수에 전달
list100.add(1000)
println("list100 : $list100")

val list200 = list100.toList()  // 가변형 -> 불변형
// list200.add(300)  //에러