2022. 4. 20. 11:56ㆍIT/안드로이드
Kotlin 의 목록 유형에는 크게 두가지가 있다.
List - List는 만든 후 수정 불가.
MutableList - 만든 후 수정 가능. 요소를 추가, 삭제, 업데이트 할 수 있다.
List()
List는 여느 언어와 같이 Elemts 와 Index 가 아래와 같이 구성되어있다.
값을 확인하고싶으면 아래와 같이 값을 불러온다.
println("First element: ${numbers[0]}")
println("Last index: ${numbers.size - 1}")
println("Last element: ${numbers[numbers.size - 1]}")
println("First: ${numbers.first()}")
println("Last: ${numbers.last()}")
맨 처음 요소 list.first(), 맨 마지막 요소 list.last()
또 다른 유용한 목록 작업중에는 , 주어진 값이 목록에 있는지 확인하는 contains() 라는 Method이다.
예를들어 1~6까지의 숫자만 있는 list 에서 list.contains(7) 을 호출하면 False가 뜰 것이다.
MuableListOf()
MutableList를 정의하려면 아래의 소스 중 둘중 하나로 선언하면 된다.
fun main() {
//val entrees = mutableListOf<String>()
val entrees: MutableList<String> = mutableListOf()
println("Entrees: $entrees")
}
<String>처럼, Element의 유형을 선언 안해주면 Error가 뜬다. (Type 매개변수, <T>)
기본적으로 위와같이 선언을 해야, 빈 List가 출력이 된다. []
List Type 을 String으로 해주었으니, String 요소 만 넣어보겠다.
fun main() {
//val entrees = mutableListOf<String>()
val entrees: MutableList<String> = mutableListOf()
entrees.add("noodles")
entrees.add("spaghetti")
println("Entrees: $entrees")
val moreItems = listOf("ravioli", "lasagna", "fettuccine")
println("Add list: " + entrees.addAll(moreItems))
println("Entrees: $entrees")
entrees.remove("spaghetti")
println("Entrees: $entrees")
entrees.removeAt(3)
println("Entrees: $entrees")
entrees.clear()
println("Entrees: $entrees")
}
결과 :
Entrees: [noodles, spaghetti]
Add list: true
Entrees: [noodles, spaghetti, ravioli, lasagna, fettuccine]
Entrees: [noodles, ravioli, lasagna, fettuccine]
Entrees: [noodles, ravioli, lasagna]
Entrees: []
맨 처음에, add로 2가지를 넣었다. noodles와 spaghetti. 그래서 Entree에는 두가지만 표시되었다.
다음은, 한꺼번에 여러개를 List에 넣는 방법이다.
먼저 moreItems에 3개의 element를 넣고, addAll로 3가지를 한꺼번에 넣는다.
정상 처리되면 기존 entrees 뒤에 더 붙어서 list가 출력된다.
요소를 지우는 것은 .remove("요소") 로 지울수 있다. 또는 Index로 지울수도 있다. removeAt(숫자)
전체 list를 지우기 위해서는 clear()를 호출한다.
List가 비었는지 알기위해서는 , isEmpty() 로 확인한다.
## 요약 정리 ##
Kotlin에서는 Kotlin 표준 라이브러리를 통해 데이터 컬렉션을 더 쉽게 관리하고 조작할 수 있는 기능을 제공합니다. 컬렉션은 동일한 데이터 유형의 여러 객체로 정의할 수 있습니다. Kotlin에는 목록, 집합, 지도와 같은 다양한 기본 컬렉션 유형이 있습니다. 이 Codelab에서는 목록에 특히 중점을 두었고 향후 Codelab에서 집합과 지도를 자세히 알아봅니다.
- 목록은 특정 유형 요소의 정렬된 컬렉션입니다(예: Strings. 목록).
- 색인은 요소의 위치를 나타내는 정수 위치입니다(예: myList[2]).
- 목록에서 첫 번째 요소는 색인 0(예: myList[0])에 있고 마지막 요소는 myList.size-1(예: myList[myList.size-1] 또는 myList.last())에 있습니다.
- 두 가지 목록 유형은 다음과 같습니다. List, MutableList.
- List는 읽기 전용으로, 초기화가 완료되면 수정할 수 없습니다. 그러나 원본을 변경하지 않고 새 목록을 반환하는 sorted() 및 reversed()와 같은 작업을 적용할 수 있습니다.
- MutableList는 요소를 추가하거나 삭제, 수정하는 등 만든 후에 수정할 수 있습니다.
- addAll()을 사용하여 항목 목록을 변경 가능한 목록에 추가할 수 있습니다.
- while 루프를 사용하여 표현식이 false로 평가될 때까지 코드 블록을 실행하고 루프를 종료합니다.
while (expression) {
// While the expression is true, execute this code block
}
- for 루프를 사용하여 목록의 모든 항목을 반복합니다.
for (item in myList) {
// Execute this code block for each element of the list
}
- vararg 수정자를 사용하면 가변적인 인수 수를 함수나 생성자에 전달할 수 있습니다.
++
반복해서 해봐야것구만...
class Order(val orderNumber: Int) {
private val itemList = mutableListOf<Item>()
/*
fun addItem(newItem: Item) {
itemList.add(newItem)
}
fun addAll(newItems: List<Item>) {
itemList.addAll(newItems)
}
*/
fun addItem(newItem: Item): Order {
itemList.add(newItem)
return this
}
fun addAll(newItems: List<Item>): Order {
itemList.addAll(newItems)
return this
}
fun print() {
println("Order #${orderNumber}")
var total = 0
for (item in itemList) {
println("${item}: $${item.price}")
total += item.price
}
println("Total: $${total}")
}
}
open class Item(val name: String, val price: Int)
//Item이 상위클래스.. subclass가 상위클래스에서 확장되므로,
// 클래스는 open 과 함께 표시해야한다.
class Noodles: Item("Noodles", 10) {
override fun toString(): String {
return name
}
}
/*
class Vegi(val topping1: String,
val topping2: String,
val topping3: String): Item("Vegi", 5) {
override fun toString(): String {
return name
}
}
*/
/*
class Vegi(val toppings: List<String>): Item("Vegi", 5) {
override fun toString(): String {
return name
}
}
*/
class Vegi(vararg val toppings: String) : Item("Vegi", 5) {
override fun toString(): String {
if (toppings.isEmpty()) {
return "$name Chef's Choice"
} else {
return name + " " + toppings.joinToString()
}
}
}
fun main() {
val ordersList = mutableListOf<Order>()
val order1 = Order(1)
order1.addItem(Noodles())
//order1.print()
ordersList.add(order1)
println()
val order2 = Order(2)
order2.addItem(Noodles())
order2.addItem(Vegi())
//order2.print()
ordersList.add(order2)
println()
val order3 = Order(3)
val items = listOf(Noodles(), Vegi("Carrots", "Beans", "Celery"))
order3.addAll(items)
ordersList.add(order3)
//order3.print()
val order4 = Order(4).addItem(Noodles()).addItem(Vegi("Cabbage", "Onion"))
ordersList.add(order4)
val order5 = Order(5)
.addItem(Noodles())
.addItem(Noodles())
.addItem(Vegi("Spinach"))
ordersList.add(order5)
for(order in ordersList) {
order.print()
println()
}
}
## 결과 값 ##
Order #1
Noodles: $10
Total: $10
Order #2
Noodles: $10
Vegi Chef's Choice: $5
Total: $15
Order #3
Noodles: $10
Vegi Carrots, Beans, Celery: $5
Total: $15
Order #4
Noodles: $10
Vegi Cabbage, Onion: $5
Total: $15
Order #5
Noodles: $10
Noodles: $10
Vegi Spinach: $5
Total: $25
'IT > 안드로이드' 카테고리의 다른 글
Android - 수명 주기 (6) | 2022.04.27 |
---|---|
Android - RecyclerView (6) | 2022.04.20 |
Android - Material Design page (2) | 2022.04.19 |
Kotlin의 클래스 및 상속 - 3 (1) | 2022.04.18 |
Kotlin의 클래스 및 상속 - 2 (1) | 2022.04.18 |