"알고 쓰자!" 컬렉션 확장 함수 1 편

구워먹는 삼겹살·2024년 11월 19일
0

컬렉션 연산

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 
}  

0개의 댓글