참조: 유튜브 디모의 코틀린
코드테스트사이트:play.kotlinlang.org
단축키(맥북):
맥북 스크린샷 바로 클립보드에 붙여넣기
-control+command+shift+3 or 4(3은 전체화면, 4는 마우스로 지정한 영역, 4일때 스페이스바 누르면 창캡처가능)
화면에 분할해놓은 창끼리 이동
-command+'
한 창에서 탭끼리 이동
-command+shift+{/}
//여태까지 우리는 컬렉션을 for문으로 반복하여 포함된 아이템을
//하나하나 꺼내 사용했었다
//ex. for(item in collection)
//하지만 코틀린은 '함수형 언어'의 특징을 가지고 있기 때문에 좀 더
//편리하게 컬렉션을 사용할 수 있다.-->'컬렉션 함수'
//컬렉션함수
//:list나 set, map과 같은 컬렉션 또는 배열에 일반함수 또는
//람다함수 형태를 사용하여 for문 없이도 아이템을 순회하며 참조하거나
//조건을 걸고, 구조의 변경까지 가능한 여러가지 함수를 지칭함
//컬렉션 함수의 동작 예)
//<forEach
//ex. collection.forEach{
// println(it)
// } //중괄호 안에서 컬렉션에 포함된 모든 아이템을
// 'it'이라는 변수로 순서대로 참조할 수 있다
//이렇게 단순히 반복만하는 함수도 있지만 '특정한 조건'을 걸 수도 있다.
//<filter
//ex. collection.filter{
// it<4
// }//중괄호 안에서 it에 조건을 걸어주면 조건에 맞는 객체만
// 다시 컬렉션으로 만들어서 반환함
// 예를들어 1,3,5,7 중 1,3만 선택
//<map
//ex. collection.map{
// it*2
// } //중괄호 안에서 it에 수식을 적용하여 값을 변경하면
// 그 값을 컬렉션으로 만들어 반환함
// 예를들어 1,2,3,4면 2,4,6,8로 만들어 반환
// 일괄적인 값 변경 가능
//<any, all, none
//ex.collection.any{it==0} //하나라도 조건에 맞으면 true
// collection.all{it==0} //모두 조건에 맞으면 true
// collection.none{it==0} //하나도 조건에 맞지 않으면 true
//<first
//ex. collection.first()
// //일반함수로 사용하는 경우 첫번째 객체를 반환
// collection.first{it>3}
// //람다함수 형태로 중괄호 안에 it에 조건을 걸어주면
// 조건에 맞는 첫번째 아이템을 반환
//<last
//ex. collection.last{it>3}
// //조건에 맞는 마지막 아이템을 반환
//대체 가능
//first->fine
//last->findLast
//first와 last함수 사용할때 문제 생길 수 있음
//->조건에 맞는 객체가 없는 경우(=(반환할?)컬렉션이 비어있는 경우)
//==>NoSuchElementException 발생
//이때 firstOrNull, lastOrNull 쓰면
//객체가 없는 경우 'null' 반환
//<count
//ex. collection.count()
// //일반함수처럼 사용하면 컬렉션의 모든 아이템의 개수 반환
// collection.count{it>7}
// //중괄호와 함께 it에 조건 걸어서 람다함수처럼 사용
// 조건에 맞는 아이템의 개수 반환
//
//컬렉션 함수를 사용하면 반복문과 조건문을 대부분 대체할 수 있다는 장점
fun main(){
val nameList = listOf("박수영","김지수","김다현","신유나","김지우")
//여러 이름 들어간 문자열 리스트 만듦
nameList.forEach{print(it+" ")}
println()//한줄 띄어주는 것 잊지 마세요!
//forEach를 통해 아이템을 차례로 표시함
println(nameList.filter{it.startsWith("김")})
//filter를 걸어서 김씨 성을 가진 사람만
//startsWith()함수를 사용하여 별도의 리스트로 만들어 출력
println(nameList.map{"이름:"+it})
//map함수 사용하여 각각의 이름앞에 이름과 콜론을 붙인 리스트 만들어 출력
println(nameList.any{it=="김지연"})
//any사용하여 김지연이라는 이름 가진 사람 하나라도 있는지 boolean값으로출력
println(nameList.all{it.length==3})
//all사용하여 이름 모두 세글자인지 boolean값으로 출력
println(nameList.none{it.startsWith("이")})
//none사용하여 이씨성을 가진사람 하나도 없는지 boolean값으로 출력
println(nameList.first{it.startsWith("김")})
//first에서 김씨성을 가진 첫번째 사람 반환받아 출력
println(nameList.last{it.startsWith("김")})
//last에서 김씨성 가진 마지막 사람 반환받아 출력
println(nameList.count{it.contains("지")})
//count함수 사용하여 이름에 "지" 들어가는 사람 셈
}
//컬렉션 함수는 람다함수를 사용하여 컬렉션을 좀 더 편리하게 조작할 수 있는
//장점을 가진 함수
//경우에따라 반복문과 조건문 대신 사용하면 편리하다.
'코틀린 문법' 카테고리의 다른 글
21. 변수의 다양한 사용방법 (0) | 2023.06.03 |
---|---|
20. 컬렉션함수(2) (0) | 2023.06.03 |
18. Set과 Map (0) | 2023.05.31 |
17. Data Class와 Enum Class (1) | 2023.05.14 |
16. 중첩클래스와 내부클래스 (0) | 2023.05.14 |