Menu
CoddyTech

복습 - HashMap 연산

Coddy Java 여정의 논리와 흐름 섹션에 포함된 레슨. 59개 중 21번째.

challenge icon

챌린지

쉬움

processHashMap라는 메서드를 작성하세요. 이 메서드는 하나의 인수를 받습니다:

  1. 이름이 products인 HashMap이며, 다음과 같습니다:
    • 키는 제품 이름(String)을 나타냅니다.
    • 값은 가격(Double)을 나타냅니다.

수행할 작업

  1. 가격이 가장 높은 제품을 찾으세요.
    • 여러 제품의 가격이 가장 높은 가격으로 같으면, 그중 아무 제품이나 반환하세요.
    • HashMap이 비어 있으면 빈 문자열("")을 반환하세요.
  2. 가격이 50.00보다 높은 제품을 필터링하여 새 HashMap에 저장하세요.
  3. 모든 제품의 평균 가격을 계산하세요.
    • HashMap이 비어 있으면 평균은 0.0이어야 합니다.

반환 형식

메서드는 다음 키-값 쌍을 포함하는 새 HashMap을 반환해야 합니다:

키값
"Highest"가격이 가장 높은 제품의 이름(String)입니다.
"Filtered"가격이 50.00보다 높은 제품만 포함하는 HashMap(HashMap<String, Double>)입니다.
"Average"모든 제품의 평균 가격(Double)입니다.

직접 해보기

import java.util.LinkedHashMap;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;

public class Main {
    public static HashMap<String, Object> processHashMap(HashMap<String, Double> products) {
        // 여기에 코드를 작성하세요
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String productsString = scanner.nextLine();

        // JSON 문자열을 HashMap으로 변환합니다
        Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
        HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);

        HashMap<String, Object> result = processHashMap(products);

        // 일관된 출력을 위해 Filtered 맵을 정렬합니다
        Map<String, Double> filteredMap = (Map<String, Double>) result.get("Filtered");
        if (filteredMap != null && !filteredMap.isEmpty()) {
            Map<String, Double> sortedFiltered = filteredMap.entrySet().stream()
                .sorted(Map.Entry.comparingByKey())
                .collect(Collectors.toMap(
                    Map.Entry::getKey,
                    Map.Entry::getValue,
                    (a, b) -> b,
                    LinkedHashMap::new
                ));
            result.put("Filtered", sortedFiltered);
        }
        
        System.out.println(result);
    }
}

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 Java 컴파일러