spring

Java 코딩테스트 준비 시 외우면 더 좋은 문법들

코딩캣츠 2026. 2. 4. 17:30

실무에서는 IDE의 자동완성 기능과 복사·붙여넣기에 의존하다 보니, 코딩테스트에서는 기본 문법이 바로 떠오르지 않아 문제를 틀리거나 시간에 쫓겨 돌아가는 경우가 몇 번 있었습니다.

그래서 코딩테스트에서 알면 도움이 되는 핵심 문법과 패턴들을 몇 가지 정리해보았습니다.

 

HashMap

// 0. HashMap 생성
HashMap<String, Integer> map = new HashMap<>();

// 1️⃣ 키만 반복
for(String key : map.keySet()) {
    System.out.println("key: " + key);
}

// 2️⃣ 값만 반복
for(Integer value : map.values()) {
    System.out.println("value: " + value);
}

// 3️⃣ 키와 값 반복 (가장 추천)
for(Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue());
}

// 4️⃣ 람다식 (외부 변수 접근 제한)
map.forEach((k,v) -> {
    System.out.println("key: " + k + ", value: " + v);
});

// 5️⃣ Stream으로 value 최댓값 가져오기
int maxValue = map.values().stream().max(Integer::compareTo).orElse(0); // map이 비었을 경우 대비

// 6️⃣ Stream으로 value 가공 후 배열로 반환
int[] processed = map.values().stream().mapToInt(v -> maxValue - v).toArray();

// 7️⃣ Stream으로 정렬: value 오름차순, value 같으면 key 내림차순
String[] sortedKeys = map.entrySet().stream()
.sorted((o1, o2) -> {
    int cmp = o1.getValue().compareTo(o2.getValue()); // value 오름차순
    if (cmp == 0) {
        return o2.getKey().compareTo(o1.getKey());   // key 내림차순
    }
    return cmp;
})
.map(Map.Entry::getKey)
.toArray(String[]::new);