Kotlin에서 유용한 고차 함수 정리
2025. 2. 27. 16:04ㆍ프로그래밍 언어/Kotlin 기초
728x90
반응형
나는 C언어, Java로 코딩을 처음 배워서 그런가 함수형 언어에는 익숙해지지 않는다.
Kotlin의 최대 장점인 고차 함수도 제대로 활용하지 못해 코딩테스트 공부를 할 때 애를 많이 먹었다.
그래서 유용한 고차 함수들을 정리해봤다.
1. map - 리스트 변환할 때 사용
❌ Java 스타일
List<String> names = new ArrayList<>();
for (User user : users) {
names.add(user.getName());
}
✅ Kotlin 스타일 (고차 함수 사용)
val names = users.map { it.name }
2. filter - 특정 조건의 요소만 선택
❌ Java 스타일
List<User> adults = new ArrayList<>();
for (User user : users) {
if (user.getAge() >= 18) {
adults.add(user);
}
}
✅ Kotlin 스타일
val adults = users.filter { it.age >= 18 }
3. forEach - 리스트 반복문
❌ Java 스타일
for (User user : users) {
System.out.println(user.getName());
}
✅ Kotlin 스타일
users.forEach { println(it.name) }
4. find - 특정 조건을 만족하는 첫 번째 요소 찾기
❌ Java 스타일
User targetUser = null;
for (User user : users) {
if (user.getId() == 10) {
targetUser = user;
break;
}
}
✅ Kotlin 스타일
val targetUser = users.find { it.id == 10 }
5. any & all - 조건 만족 여부 확인
❌ Java 스타일
boolean hasAdult = false;
for (User user : users) {
if (user.getAge() >= 18) {
hasAdult = true;
break;
}
}
✅ Kotlin 스타일
val hasAdult = users.any { it.age >= 18 } // 하나라도 조건 만족하면 true
val allAdults = users.all { it.age >= 18 } // 모든 요소가 조건 만족해야 true
- any는 하나라도 만족하면 true
- all은 모두 만족해야 true
6. groupBy - 특정 기준으로 그룹화
❌ Java 스타일
Map<String, List<User>> userMap = new HashMap<>();
for (User user : users) {
String country = user.getCountry();
if (!userMap.containsKey(country)) {
userMap.put(country, new ArrayList<>());
}
userMap.get(country).add(user);
}
✅ Kotlin 스타일
val userMap = users.groupBy { it.country }
7. reduce & fold - 리스트 요소를 하나의 값으로 축약
❌ Java 스타일
int totalAge = 0;
for (User user : users) {
totalAge += user.getAge();
}
✅ Kotlin 스타일 (reduce)
val totalAge = users.map { it.age }.reduce { acc, age -> acc + age }
✅ Kotlin 스타일 (fold)
val totalAge = users.fold(0) { acc, user -> acc + user.age }
8. take & drop - 리스트 일부 가져오기
✅ Kotlin 스타일
val top3Users = users.take(3) // 처음 3명 가져오기
val except3Users = users.drop(3) // 처음 3명 제외한 나머지 가져오기
- take(n): 처음 n개 선택
- drop(n): 처음 n개 제외
728x90
반응형
'프로그래밍 언어 > Kotlin 기초' 카테고리의 다른 글
Kotlin에서 == vs === 차이 (1) | 2025.03.18 |
---|---|
Kotlin 코딩테스트의 Kick! 우선순위큐 (Priority Queue) (0) | 2025.02.15 |
Kotlin inline 함수, 진짜 성능 최적화에 도움이 될까? (0) | 2025.02.07 |
Kotlin 상태 관리 | Sealed Class vs Enum Class 차이점 (0) | 2025.02.06 |
Kotlin에서 launch와 async는 무엇이 다를까? (0) | 2025.02.03 |