본문 바로가기
Kotlin 공부 노트

코틀린의 배열/리스트

by 지게요 2021. 12. 15.
728x90
반응형

# 코틀린의 배열 만들기

1. val 변수명 = arrayOf("이름 1","이름 2","이름 3")

- 여기서 숫자로 자료형을 하고 싶다면 : val 변수명 = intArrayof(1,2,3) 이런 식으로 쓰면 된다

2. val 변수명 = Array<자료형>(배열의 개수, 어떤 식으로 초기화할 거냐(람다식))

3. val 변수명 = arrayOfNull<자료형>(크기) - 각각의 칸에는 Null 값이 들어감

4. val 변수명 = emptyArray<자료형>() - 비어있는 배열 만들기

ex) 1. val name = arrayOf("홍길동","가나다","사랑해")

2. val name2 = Array<String>(3, {index -> "홍길동${index+1}"})

3. val name3 = arrayOfNull<String>(3)

4. val name4 = emptyArray<String>()

 

 val names =  arrayOf("홍길동1","홍길동2","홍길동3")
 val names2 =  Array<String>(3,{index -> "홍길동${index+1}"})
 val names3 =arrayOfNulls<String>(3)
 val names4 = emptyArray<String>()
 
 val digits = intArrayOf(1,2,3)

원소의 값을 변경하고 싶을 때는 set을 써도 되고 아니면 아래 예제처럼 쓰는 걸 권장한다. 배열명.set(찾을번지,바꾸고 싶은 값)

원소의 값을 가져오고 싶을 때는 get을 써도 되고 아니면 아래 예제처럼 쓰는 걸 권장한다.

그리고 배열 안에 들어가 있는 원소의 개수를 알고 싶으면 배열명.count() 나 배열명.size를 써주면 개수를 가져온다

val digits = intArrayOf(1,2,3)

//set과 get
digits.set(2,4) // 이런식으로 쓰면 digits 배열의 "3"이라는 값이 4로 변경이 된다
val aDigit = digits.get(2) // digits배열의 2번지의 값을 가져온다 그 결과 4를 가져오게 된다


// 좀 더 편리한 방법
digits[2] = 4 // 이런식으로 중괄호로 표현을 하면 set을 쓸 필요가 없어진다
val aDigit = digits[2] // 이런식으로 중괄호로 표현을 하면 get을 쓸 필요가 없어진다

val digitConut = digits.count() // 배열의 갯수 가져오기 
val digitSize = digits.size // 배열의 갯수 가져오기

# 코틀린의 배열 조작

원래 있는 배열의 추가를 하고 싶으면 배열명.plus(추가 할 값)을 써주면 추가를 할 수 있다

배열의 들어있는 값이 몇 번째 인덱스에 들어가 있는지 확인하려면 배열명.indexOf(찾을값) 을 써주면 알 수 있다

 

배열의 원소들을 출력하고 싶을 때는 forEach 문을 써서 출력을 하는 게 편하다

또한 for을 써도 된다

 

val digits = intArrayOf(1,2,3)

digits.plus(4) // plus를 써서 배열의 값을 추가 해준다
val digits2 = digits.plus(5) // 봔환을 받으면 새로운 배열이 만들어진다

val aIndex = digits2.indexOf(5) // 배열 인덱스 값 중 5가 들어있는 위치가 어딘지 찾는 법

// forEach 사용법 1 :  명시적으로 i변수에 값을 지정하는 방법
digits.forEach { i ->
  println("$i")
}

// forEach 사용법 2 :  암묵적인 방법 사용시 it 키워드 변수 사용
digits.forEach { 
  println(it)
}

// for 사용
for(elem in digits)
{
 println("${elem}")
}

# 코틀린의 배열 (리스트)의 정렬

val 새로운 배열명 = 배열명.sortedArray() 함수를 쓰면 정렬(오름차순)을 간편하게 할 수 있다.

내림차순으로 정렬을 하고 싶으면 sortedArrayDescending() 를 쓰면 내림차순 정렬이 가능하다.

 
val digits = intArrayOf(1,2,3)

val sortedArray = digits.sortedArray() // sortedArray()를 써서 배열 정렬 (오름차순)
val sortedArray2 = digits.sortedArrayDescending() // sortedArrayDescending()를 써서 배열 정렬(내림차순)

# 코틀린의 배열 (리스트)의 정렬

배열 같은 경우에는 고정된 길이만 할 수 있고 그 반면 리스트는 길이가 늘어 날 수가 있다

-리스트 만드는 방법

val 변수명 = listOf("들어갈값이름1","들어갈값이름2","들어갈값이름3") ※ 변경이 안됨 (기본 리스트)

val 변수명 = mutableListOf<자료형>("들어갈값이름1","들어갈값이름2","들어갈값이름3") mutable을 붙여주면 변경(추가) 가능

val 변수명 = List<자료형>(길이,{람다식})

val 변수명 = emptyList<자료형>() - 비어있는 리스트

val 변수명 = arrayListOf<자료형>() - 비어있을 수도 있고 값이 들어갈 수도 있다 (arrayList를 쓰는 게 가장 좋은 방법)

val 변수명 = ArrayList<자료형>()

 val names =  listOf("홍길동1","홍길동2","홍길동3") // listOf로 리스트 생성 변경이 안됨
 val names2 = mutableListOf<String>("홍길동1","홍길동2","홍길동3") // mutableListOf로 리스트 생성 변경 가능

 names.add("홍길동4") ///// 일단 listOf로 생성한 리스트라서 추가 안됨 에러/////////
 names2.add("홍길동4") // mutableListOf로 생성한 리스트라서 추가 가능
 names2[1] = "홍길동5" // 이렇게 해주면 names2에 1번지에 값 즉 "홍길동2"를 "홍길동5"라는 문자로 바꾸는 것
 val names3 = List<String>(3,{index -> "홍길동${index+1}"})
 val names4 = emptyList<String>() // 자료형이 String인 비어있는 리스트 생성
 val names5 = arrayListOf<String>() // 추천하는 방법
 val names6 = ArrayList<String>() // 추천하는 방법

 

반응형