Menu
CoddyTech

Ôn tập: Thao tác với HashMap

Thuộc phần Logic và luồng chương trình trong hành trình Java của Coddy. Bài học 21 trên 59.

challenge icon

Thử thách

Dễ

Tạo một phương thức có tên processHashMap nhận một đối số:

  1. Một HashMap có tên products, trong đó:
    • Các khóa đại diện cho tên sản phẩm (String).
    • Các giá trị đại diện cho giá (Double).

Các thao tác cần thực hiện

  1. Tìm sản phẩm có giá cao nhất.
    • Nếu nhiều sản phẩm có cùng mức giá cao nhất, trả về bất kỳ sản phẩm nào trong số đó.
    • Nếu HashMap trống, trả về chuỗi rỗng ("").
  2. Lọc các sản phẩm có giá lớn hơn 50.00 và lưu chúng vào một HashMap mới.
  3. Tính giá trung bình của tất cả sản phẩm.
    • Nếu HashMap trống, giá trung bình phải là 0.0.

Định dạng giá trị trả về

Phương thức cần trả về một HashMap mới với các cặp khóa-giá trị sau:

KhóaGiá trị
"Highest"Tên sản phẩm có giá cao nhất (String).
"Filtered"Một HashMap (HashMap<String, Double>) chỉ chứa các sản phẩm có giá lớn hơn 50.00.
"Average"Giá trung bình của tất cả sản phẩm (Double).

Tự làm thử

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) {
        // Viết code của bạn ở đây
    }

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

        // Chuyển chuỗi JSON thành HashMap
        Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
        HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);

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

        // Sắp xếp map Filtered để đầu ra luôn nhất quán
        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);
    }
}

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Java online