kotlin
코틀린 : Collection 과 람다, 정렬
ChloeLee
2020. 10. 21. 20:01
Collection 과 람다
groupby 함수
groupby (T->R):Map
매개 변수가 1개이고 리턴이 있는 함수를 대입해서 리턴 값을 데이터를 분류를 해서 Map 으로 리턴해주는 함수
정렬
reverse, sorted, sortedBy, sortedDescending, sortedDescending
reverse 는 매개 변수 없이 사용해서 데이터의 순서를 반대로 만들어 줍니다.
sorted 는 매개 변수 없이 사용해서 데이터를 오름차순 ( 작은 것 -> 큰 것 ) 정렬해서 리턴 합니다.
데이터의 크기를 비교할 수 있는 경우에만 사용 가능
sortedBy 는 매개 변수가 1 개이고 리턴이 있는 함수를 대입받아서 리턴 값을 가지고 오름차순 정렬을 해서 리턴합니다.
null
class User(var num:Int, var name:String, var gender:String, var score:Int){}
fun main(args:Array<Sting>){
// 데이터의 모임 생성
var list = mutableListOf<User>()
// 데이터 추가
list.add(User(1, "배유나", "여자", 98))
list.add(User(2, "한희구", "남자", 92))
list.add(User(3, "지나연", "여자", 58))
list.add(User(4, "배유한", "남자", 71))
list.add(User(5, "김지아", "여자", 38))
list.add(User(6, "한희나", "여자", 91))
//gender를 이용해서 분류 - Map 으로 리턴
println(list.groupBy{it.gender})
//Map 의 데이터 확인 - key 에는 key 값이 오는 것이 value는 저장된 값입니다.
// goup by 를 하게 되면 key 는 분류할 때 사용한 항목명이고
// value는 항목별 리스트입니다.
list.groupBy{it.gender}.forEach{ it:Map.Entry<String, List<User>>
println("${it.key}:")
print(it.value.sumBy{it.score})
println("")
}
// score 의 오름차 순으로 정렬해서 name 출력
list.sortedBy { it.score }.forEach{println(it.name)}
}