일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 서비스 vs 쓰레드
- 안드로이드 라이선스
- 큐 자바 코드
- 서비스 쓰레드 차이
- 자바 다형성
- 2022 플러터 설치
- 플러터 설치 2022
- 객체
- rxjava cold observable
- Rxjava Observable
- android ar 개발
- rxjava hot observable
- 스택 큐 차이
- 안드로이드 os 구조
- 안드로이드 레트로핏 사용법
- 안드로이드 레트로핏 crud
- 안드로이드 유닛테스트란
- 멤버변수
- 안드로이드 유닛 테스트 예시
- rxjava disposable
- 스택 자바 코드
- 안드로이드 유닛 테스트
- android retrofit login
- 클래스
- jvm이란
- jvm 작동 원리
- ar vr 차이
- ANR이란
- 안드로이드 라이선스 종류
- 2022 플러터 안드로이드 스튜디오
- Today
- Total
나만을 위한 블로그
[Kotlin] 반복문(for) 사용법 정리 본문
먼저 for문에 사용할 컬렉션을 정의한다.
fun main() {
val names: List<String> = listOf("감", "배", "사과", "포도", "바나나", "파인애플", "오렌지")
}
이 names 라는 리스트 안의 값들을 출력하기 위해선 아래처럼 중괄호가 없어도 출력할 수 있다.
for (item in names) println(item)
// 감
// 배
// 사과
// 포도
// 바나나
// 파인애플
// 오렌지
중괄호를 사용한다면 아래처럼 쓸 수 있다. 결과는 위의 주석 앞에 "name : "이 붙은 형태일 뿐이다.
for (name in names) {
println("name : $name")
}
그런데 for문을 사용하는 이유 중 하나가 배열 또는 컬렉션의 특정 인덱스를 갖는 아이템에 대해 어떤 처리를 하고 싶어서이다. 위의 for문 사용법으로는 이 처리가 불가능한데, 아래의 방법을 쓰면 가능하다.
fun main() {
val names: List<String> = listOf("감", "배", "사과", "포도", "바나나", "파인애플", "오렌지")
for (i in names.indices) {
println("name : ${names[i]}")
}
}
이 방식을 쓰면 println()이 아닌 if를 통한 조건으로 인덱스에 접근해 해당 값을 활용할 수 있다.
또는 내가 정의한 변수를 써서 for문 안의 아이템에 접근할 수 있다.
fun main() {
val names: List<String> = listOf("감", "배", "사과", "포도", "바나나", "파인애플", "오렌지")
for ((aaa, ddd) in names.withIndex()) {
println("$aaa 번 아이템 : $ddd")
}
}
aaa, ddd 변수를 각자 자신이 원하는 변수명으로 설정하면 된다.
그리고 코틀린에선 숫자를 출력할 때 조건을 걸어 출력하기가 편하다.
예를 들어 10부터 2씩 빼면서 짝수만 출력한다면 아래와 같이 사용할 수 있다.
fun main() {
for (i in 10 downTo 1 step(2)) {
println("i : $i")
}
}
step(2)가 2씩 빼겠다는 뜻이니 이걸 없애면 10부터 1씩 숫자를 줄이면서 출력하는 걸 볼 수 있다.
이것 말고도 주어진 범위 안에서 짝수를 출력하는 다른 방법이 있다.
fun main() {
val list = listOf(2, 8, 5, 7, 9, 6, 10, 22)
val predicate: (Int) -> Boolean = {it % 2 == 0}
println(list.count(predicate))
}
predicate라는 변수의 우측을 보면 받은 숫자를 2로 나눈 결과가 짝수인지 확인해서(Boolean) 맞을 경우 그 숫자의 개수를 리스트에서 센 다음 출력하도록 조건을 건다. list 안에서 짝수는 5개기 때문에 위 코드를 실행하면 5가 출력되는 걸 볼 수 있다.
만약 역순으로 출력하겠다면 어떻게 하면 될까? 위에서 정의한 names 리스트를 사용하는 경우 아래와 같이 할 수 있다.
fun main() {
val names: List<String> = listOf("감", "배", "사과", "포도", "바나나", "파인애플", "오렌지")
for (i in names.reversed()) {
println("name 역순 출력 : $i")
}
}
reversed() 메서드를 적용한 위 코드를 실행하면 마지막 아이템인 오렌지부터 감까지 거꾸로 출력되는 걸 볼 수 있다.
물론 String 값들이 들어있는 리스트에도 적용할 수 있다.
fun main() {
val names: List<String> = listOf("감", "배", "사과", "포도", "바나나", "파인애플", "오렌지")
val predicate2: (String) -> Boolean = {it.length == 2}
println("길이가 2인 아이템은 몇 개인가? : ${names.count(predicate2)}")
}
문자열 길이가 2인 아이템의 개수를 세서 출력하니 위 코드를 실행하면 2가 출력된다.
'개인 공부 > Kotlin' 카테고리의 다른 글
[Kotlin] null 처리 방법 정리 (0) | 2022.02.20 |
---|---|
[Kotlin] 범위(range)란? in 연산자 사용법 (0) | 2022.02.13 |
[Kotlin] companion object(동반 객체)란? (0) | 2022.01.31 |
[Kotlin] 생성자 정리 (0) | 2022.01.30 |
[Kotlin] is 연산자와 as 연산자의 차이 (0) | 2021.05.23 |