Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- viewpager2
- SplashFragment
- Kotlin
- aab
- ViewModel
- Android
- web
- 개발
- progressbar
- UIPickerView
- imagepicker
- HTML
- javascript
- 실행지연
- SWIFT
- retrofit2
- DispatchTouchEvent
- InAppPurchase
- Alamofire
- CalendarView
- MotionEvent
- dispatchQueue
- RxJava
- 스터디
- ayncAfter
- IOS
- MemoList
- CSS
- Dropdown
- RecyclerView
Archives
- Today
- Total
멜팅비의 개발 공부
[Android-Kotlin] 코틀린 Collection 함수 본문
반응형
코틀린 Collection 함수 스터디 내용 정리
List
데이터가 저장하거나 삭제될 때 순서를 지키는 Collection
Mutable(변할 수 있는)과 Immutable(불변의)을 모두 지원
Immutable List = 수정할 수 없는 List
get(조회)만 가능
val fruits = listOf("apple", "banana", "kiwi", "peach")
fruits.get(2) // 실행결과 > kiwi
fruits[1] // 실행결과 > bananan
fruits.size // 실행결과 > 4
fruits.indexOf("peach") // 실행결과 > 3
Mutable List = 수정할 수 있는 List
add /addALL / remove / removeAt 등 추가, 삭제가 가능
val fruits = mutableListOf<String>("apple", "banana", "kiwi", "peach")
fruits.remove("apple")
// 실행결과 > [banana, kiwi, peach]
fruits.add("grape")
// 실행결과 > [banana, kiwi, peach, grape]
fruits.addAll(listOf("melon", "cherry")
// 실행결과 > [banana, kiwi, peach, grape, melon, cherry]
fruits.removeAt(2)
// 실행결과 > [banana, kiwi, grape, melon, cherry]
- add / addAll
- add(item) : 리스트 맨 끝에 item을 추가
- add(index, item) : index에 item을 추가
- addAll(list) : 파라미터에 있는 list의 항목들을 가져와 추가
- addAll(index, list) : index자리에 파라미터에 있는 list의 항목들을 가져와 추가
val fruits = mutableListOf<String>("apple", "banana", "kiwi", "peach")
// add
fruits.add("grape")
fruits.add(3, "orange")
// addAll
fruits.addAll(listOf("melon", "cherry")
fruits.addAll(3, listOf("melon", "cherry")
- clear : MutableList의 모든 요소 삭제
val fruits = mutableListOf<String>("apple", "banana", "kiwi", "peach")
fruits.clear()
- iterator : Collection 개념에 속하는 자료구조들의 원소들을 순회할 때 공통적으로 사용
val iterator = fruits.iterator()
// Iterator 생성 후 첫 번째 원소를 가리킴
// next()함수 호출 시 가리키고 있는 원소의 값을 return 후 다음 원소를 가리킴
// hasNext() Iterator가 가리킬 다음 원소가 존재하는지 여부 체크
while (iterator.hasNext()) {
print(iterator.next())
}
- listIterator : List형에서만 사용 가능, 양쪽 순회가 가능한 양방향 Iterator
- hasPrevious() : 이전 원소가 존재하는 확인
- previous() : 가리키고 있는 원소의 값을 return 후 이전 원소를 가리킴
- nextIndex() / previousIndex() : index 확인 가능
val listIterator = fruits.listIterator(2)
// listIterator(index) : iterator 생성 시 index부터 가리키도록
while (listIterator.hasNext()) {
print(listIterator.next())
}
while (listIterator.hasPrevious()) {
print(listIterator.previous())
}
- remove : 배열에 해당 요소 값을 찾아 삭제 (요소가 있을 경우 true 반환 / 없을 경우 false 반환)
- removeAll : Collection을 인자로 받으며 Collection 요소 중 하나라도 일치하는 값이 있으면 삭제하고 true 반환 / 없을 경우 false 반환
- removeAt : List의 index에 있는 요소를 삭제하고 빈 공간도 삭제
val fruits = mutableListOf<String>("apple", "banana", "kiwi", "peach")
fruits.remove("apple")
// [banana, kiwi, peach]
fruits.removeAll(listOf("banana", "orange", "melon")
// [kiwi, peach]
val fruits = mutableListOf<String>("apple", "banana", "kiwi", "peach")
fruits.removeAt(0)
// [banana, kiwi, peach]
- retainAll : 두 개의 Collection에서 공통된 요소를 제외한 나머지 삭제
val fruits = mutableListOf<String>("apple", "banana", "kiwi", "peach")
val fruits2 = mutableListOf<String>("apple", "orange", "kiwi", "grape")
fruits.retainAll(fruits2) // [apple, kiwi]
- set(index, value) : index 값을 value로 바꾸고 바뀐 요소를 return
val fruits = mutableListOf<String>("apple", "banana", "kiwi", "peach")
fruits.set(1, "orange") // [apple, orange, kiwi, peach]
fruits[1] = "grape" // [apple, grape, kiwi, peach]
- subList : 원하는 위치를 잘라 Collection을 반환
val fruits = mutableListOf<String>("apple", "banana", "kiwi", "peach")
fruits.subList(1,3) // [banana, kiwi]
Set
동일한 아이템이 없는 Collection, 순서가 특별히 정해져 있지 않으며 null 객체를 갖고 있을 수 있음
단, null도 1개만 가능 Immutable/Mutable 지원
Immutable Set = 수정이 불가능한 set
val numSet = setOf<Int>(1, 2, 3, 4, 5, 1) // [1, 2, 3, 4, 5]
numSet.size // 5
numSet.contains(3) // true
numSet.isEmpty() // false
Mutable Set = 수정이 가능한 set
val numSet = setOf<Int>(1, 2, 3, 3, 4, 5) // [1, 2, 3, 4, 5]
numSet.add(6) // [1, 2, 3, 4, 5, 6]
numSet.remove(5) // [1, 2, 3, 4, 6]
numSet.removeIf( { it < 3 } ) // [4, 6]
Map
key와 value를 짝지어 저장하는 Collection
Map의 key는 유일하기 때문에 동일한 이름의 key는 허용하지 않는다.
Immutable / Mutable 지원
Immutable Map
mapOf<key Type, value Type>()으로 생성
아이템은 Pair 객체로 표현 > Pair(A, B) = A to B
val map1 = mapOf<String, String>("1" to "one", "2" to "two")
val map2 = mapOf(Pair("1", "one"), Pair("2", "two"))
// {1=one, 2=two}
Map의 데이터 일기
val map = mapOf(Pair("1", "apple"), Pair("2", "orange"), Pair("3", "banana"))
map.get("1") // apple
map["1"] // apple
map.values // [apple, orange, banana]
map.keys // [1, 2, 3]
Mutable Map
mutableMapOf <key Type, value Type>()으로 생성
- put() : 객체 추가
- remove() : 요소 삭제
- clear() : 전체 요소 삭제
val map = mutableMapOf<String, String>()
map.put("1", "apple")
map.put("2", "banana")
map["3"] = "kiwi"
// {1=apple, 2=banana, 3=kiwi}
map.put("4", "orange")
map.remove("2")
// {1=apple, 3=kiwi, 4=oragne}
map.clear()
// {}
반응형
'개발 공부 > [Android 개발]' 카테고리의 다른 글
[Android] RxJava2 관련 스터디 (0) | 2021.08.10 |
---|---|
[Android-Kotlin] FullScreen DialogFragment 구현하기(Progress Dialog) (0) | 2021.04.06 |
[Android/Kotlin] 안드로이드 BottomSheetDialogFragment 구현하기 (2) | 2021.03.08 |
[Android] 안드로이드 android.view.WindowManager$BadTokenException: Unable to add window 에러 해결방법 (0) | 2021.03.02 |
[Android-Kotlin] SplashFragment에서 화면이동하기 (0) | 2021.03.02 |
Comments