Menu
CoddyTech

Rangkuman: Operasi HashMap

Termasuk bagian Logika & Alur dalam perjalanan Java di Coddy. Pelajaran 21 dari 59.

challenge icon

Tantangan

Mudah

Buat method bernama processHashMap yang menerima satu argumen:

  1. Sebuah HashMap bernama products dengan:
    • Key yang mewakili nama produk (String).
    • Value yang mewakili harga (Double).

Operasi yang Harus Dilakukan

  1. Temukan produk dengan harga tertinggi.
    • Jika beberapa produk memiliki harga tertinggi yang sama, kembalikan salah satunya.
    • Jika HashMap kosong, kembalikan string kosong ("").
  2. Filter produk yang harganya lebih dari 50.00 dan simpan dalam HashMap baru.
  3. Hitung harga rata-rata semua produk.
    • Jika HashMap kosong, nilai rata-ratanya harus 0.0.

Format Nilai Kembalian

Method harus mengembalikan HashMap baru dengan pasangan key-value berikut:

KeyValue
"Highest"Nama produk dengan harga tertinggi (String).
"Filtered"Sebuah HashMap (HashMap<String, Double>) yang hanya berisi produk dengan harga lebih dari 50.00.
"Average"Harga rata-rata semua produk (Double).

Coba sendiri

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) {
        // Tulis kodemu di sini
    }

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

        // Ubah string JSON menjadi HashMap
        Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
        HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);

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

        // Urutkan map Filtered agar output tetap konsisten
        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);
    }
}

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Java online