Powtórka — operacje na HashMap
Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 21 z 59.
Wyzwanie
ŁatwyUtwórz metodę o nazwie <strong>processHashMap</strong>, która przyjmuje jeden argument:
- HashMap o nazwie
<strong>products</strong>, w której:- Klucze reprezentują nazwy produktów (
String). - Wartości reprezentują ceny (
Double).
- Klucze reprezentują nazwy produktów (
Operacje do wykonania
- Znajdź produkt o najwyższej cenie.
- Jeśli kilka produktów ma tę samą najwyższą cenę, zwróć dowolny z nich.
- Jeśli HashMap jest pusta, zwróć pusty ciąg znaków (
"").
- Odfiltruj produkty, których cena jest większa niż
<strong>50.00</strong>i umieść je w nowej HashMap. - Oblicz średnią cenę wszystkich produktów.
- Jeśli HashMap jest pusta, średnia powinna wynosić
0.0.
- Jeśli HashMap jest pusta, średnia powinna wynosić
Format zwracanej wartości
Metoda powinna zwrócić nową HashMap z następującymi parami klucz-wartość:
| Klucz | Wartość |
|---|---|
"Highest" | Nazwa produktu o najwyższej cenie (String). |
"Filtered" | HashMap (HashMap<String, Double>) zawierająca wyłącznie produkty, których ceny są większe niż 50.00. |
"Average" | Średnia cena wszystkich produktów (Double). |
Spróbuj swoich sił
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) {
// Wpisz tutaj swój kod
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String productsString = scanner.nextLine();
// Przekonwertuj ciąg JSON na HashMap
Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);
HashMap<String, Object> result = processHashMap(products);
// Posortuj mapę Filtered, aby zapewnić spójny wynik
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);
}
}Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online