람다함수를 사용해 컬렉션을 좀 더 편리하게 쓰는 함수
데이터를 목록 끝에 삽입함
인덱스 데이터를 삽입함
목록에 처음 나타나는 E를 제거
인덱스에 있는 데이터를 삭제함
forEach{println(it)}
컬렉션안의 모든 함수를 it이라는 변수로 순서대로 참조가능
index,value 같이 순서대로 참조?
filter{ it < 4 }
특정한 조건걸기, 조건에 맞는 컬렉션만 반환해줌
map{it*2}
it에 수식을 적용해 값을 변형해 반환해줌
하나라도 조건에 맞으면 true
모두 조건에 맞으면 true
모두 조건에 맞지 않으면 true
일반함수로쓰는건(), 람다함수식으로{} 이렇게 쓰면 밑처럼 쓰임
first{it>3}
조건에 맞는 첫번째 아이템 반환
(first는 일반함수()로 쓰면 첫번째 객체반환, 앞에서 배움)
last{it>3}
조건에 맞는 마지막 아이템 반환
해당 조건에 맞는 첫번째 요소를 반환.
해당요소가 없으면 null 반환
data class Person(val name: String, val age: Int)
val people = listOf(
Person("Alice", 30),
Person("Bob", 25),
Person("Charlie", 35)
)
val personNamedBob = people.find { it.name == "Bob" }
println(personNamedBob) // Output: Person(name=Bob, age=25)
fisrt, last쓸때 객체가 없으면 에러발생 -> firstOrNull, LastOrNull사용 하면됨(객체 없으면 null반환)
조건에 맞는 아이템 갯수 반환
(일반함수()로 쓰면 모든 아이템갯수 반환)
a.associateBy{ it.name } // key로 사용할 속성을 넣어주면댐
이동수 to 1998, 소진호 to 1997에서, 심성재 to 1997
(이동수 =(이동수 = 1998)), (소진호 = (소진호 = 1997)), (심성재 =~~)로
a.groupBy{ it.birthday } //
1998 = (이동수 =1998), 1997 = ((소진호 = 1997),(심성재 = 1997))
val(over2002, under2002) = a.partition{ it.birthaday > 2002 }
over2002, under2002 조건 2개생김
fun main(){
data class Person(val name : String, val birthday: Int) //함수안에 class, data class되네?
val personList = listOf(Person("유나",1992),
Person("조이", 1996),
Person("츄", 1999),
Person("유나", 2003))
println(personList.associateBy { it.birthday })
//{1992=Person(name=유나, birthday=1992), 1996=Person(name=조이, birthday=1996), 1999=Person(name=츄, birthday=1999), 2003=Person(name=유나, birthday=2003)}
println(personList.groupBy { it.name })
//{유나=[Person(name=유나, birthday=1992), Person(name=유나, birthday=2003)], 조이=[Person(name=조이, birthday=1996)], 츄=[Person(name=츄, birthday=1999)]}
val(over1998, under1998) = personList.partition { it.birthday > 1998 }
println(over1998) //[Person(name=츄, birthday=1999), Person(name=유나, birthday=2003)]
println(under1998) //[Person(name=유나, birthday=1992), Person(name=조이, birthday=1996)]
}
a.flatMap{ listOf(it*3,it+3) }
reduce랑 비슷
Int만됨. 그냥 쓰지마. sumOf()써
Int말고 double,float 등 가능
데이터를 하나씩 불러와 합칠때
val totalSales = order.entries.sumOf { (menu, quantity) ->
menu.price * quantity
}
val totalSales = orders.sumOf{ order ->
order.menu.entries.sumOf { (menu, quantity) ->
menu.price * quantity
}
}
map에서 쓰임.
map에서 key. value값을 반환하여 사용할때 사용
fun main() {
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
// Accessing the entries
for (entry in map.entries) {
println("Key: ${entry.key}, Value: ${entry.value}")
}
}
.getOrDefault(검색 하려는 관련 값이 있는 키, 맵에서 키를 찾을 수 없는 경우 반환될 값)
문자열, 정수, boolean 뭐든 상관없음
return시키는거!
val ageMap = mapOf("Alice" to 25, "Bob" to 30, "Charlie" to 35)
val aliceAge = ageMap.getOrDefault("Alice", -1) // Returns 25
println($aliceAge") // 25
val davidAge = ageMap.getOrDefault("David", -1) // Returns -1 (default value)
println($davidAge") // -1