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
반응형