컬렉션 연산
fun main() {
val list = listOf(1,2,3,4)
val map =mapOf(1 to 1, 2 to 2)
println(list + 5)//[1, 2, 3, 4, 5]
println(list - 4)//[1, 2, 3]
println(list + listOf(5,6,7))//[1, 2, 3, 4, 5, 6, 7]
println(list - listOf(3,4))//[1, 2]
println(map + mapOf(3 to 3)) //{1=1, 2=2, 3=3}
println(map - 2) //{1=1} 해당하는 키값으로 제거
}
요소의 처리와 집계
1. 요소 순환
fun main() {
val list = listOf(1,2,3,4)
val useMap = list.map{it *2}// 새로운 컬력센을 생성함
println(useMap)//[2, 4, 6, 8]
val useForEachIndexed = list.forEachIndexed{index,value ->println("$index $value")}//인덴스랑 같이 요소를 출력함
println(useForEachIndexed)//kotlin.Unit 반환 값이 없음
val userForEach = list.forEach{it}
println(userForEach)//kotlin.Unit 반환 값이 없음
val useOnEach = list.onEach{it}
println(useOnEach)//[1, 2, 3, 4] 반환 값이 있음 원본 컬렉션을 반환함
}
2. 요소 갯수
fun main() {
val list = listOf(1,2,3,4)
val useCount = list.count{it ==1}// 조건은 불리언 값
println(useCount) //1 1의 갯수는 한개다.
val useMax = list.max()
println(useMax)//4 최댓값은 4이다.
val useMin = list.min()
println(useMin)//1 최소 값은 1이다.
val useMayBy = list.maxBy{ it % 2 == 0}//조건을 줄 수 있음
println(useMayBy)//2
val useMinBy = list.minBy{it % 2 == 0}//조건을 줄 수 있음
println(useMinBy)//1
}
3.각요소에 정해진 식 적용
fun main() {
val list = listOf(1,2,3,4)
val useFold = list.fold(4){total,next -> total + next}// 초기값 4 +1+2+3+4 =14
println(useFold)
val useFold2 = list.fold(3){total,next -> total * next}// 초기값 3 3*1*2*3*4
println(useFold2)
val useFold3 = list.foldRight(4){total,next -> total + next} // 14 1+2+3+4+4
println(useFold3)
val useReduce = list.reduce{total,next -> total +next}//10 초기값을 사용하지 않음
println(useReduce)
val useReduce2 = list.reduce{total,next -> total *next}//24 초기값을 사용하지 않음
println(useReduce2)
}
4. 모든 요소 합산하기
fun main() {
val list = listOf(1,2,3,4)
val list2 = listOf(5,6,7,8)
println(list.sum())//10 list 요소 총합
println((list+list2).sum()) //2개 리스트 요소 총합
println(list.sumOf{it*2})// 1*2 + 2*2 ... 20 list요소의 2를 곱합 후 총합
}
5. 요소 검사
fun main() {
val list = listOf(1,2,3,4)
println(list.all{it %2 == 0})// false 리스트 모든 요소가 조건에 맞으면 true
println(list.any{it %2 ==0})// true 리스트 1개 이상의 요소가 조건에 맞으면 true
println(list.contains(1))//true 전달 받은 인자가 요소를 포함하면 true
println(2 in list)//true 인자가 리스트안에 있으면 true
println(list.containsAll(listOf(1,2,35)))//false 리스트 형식의 인자가 모드 포함 되면 true
println(list.none())//리스트 요소가 없으면 true 있으면 false
println(list.isEmpty())//리스트가 비었으면 true
println(list.isNotEmpty())//리스트가 비어있지않으면 true
}