Riepilogo - Operazioni con HashMap
Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 21 di 59.
Sfida
FacileCrea un metodo chiamato <strong>processHashMap</strong> che accetta un argomento:
- Una HashMap chiamata
<strong>products</strong>in cui:- Le chiavi rappresentano i nomi dei prodotti (
String). - I valori rappresentano i prezzi (
Double).
- Le chiavi rappresentano i nomi dei prodotti (
Operazioni da eseguire
- Trova il prodotto con il prezzo più alto.
- Se più prodotti hanno lo stesso prezzo più alto, restituiscine uno qualsiasi.
- Se la HashMap è vuota, restituisci una stringa vuota (
"").
- Filtra i prodotti con un prezzo maggiore di
<strong>50.00</strong>e inseriscili in una nuova HashMap. - Calcola il prezzo medio di tutti i prodotti.
- Se la HashMap è vuota, la media deve essere
0.0.
- Se la HashMap è vuota, la media deve essere
Formato del valore restituito
Il metodo deve restituire una nuova HashMap con le seguenti coppie chiave-valore:
| Chiave | Valore |
|---|---|
"Highest" | Il nome del prodotto con il prezzo più alto (String). |
"Filtered" | Una HashMap (HashMap<String, Double>) contenente solo i prodotti con prezzi maggiori di 50.00. |
"Average" | Il prezzo medio di tutti i prodotti (Double). |
Provalo tu
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) {
// Scrivi il tuo codice qui
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String productsString = scanner.nextLine();
// Converti la stringa JSON in HashMap
Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);
HashMap<String, Object> result = processHashMap(products);
// Ordina la mappa Filtered per garantire un output coerente
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);
}
}Tutte le lezioni di Logica e flusso
1Array multidimensionali
Concetti di base degli array 2DAccesso agli elementi degli array 2DCicli annidati con array 2DRiepilogo - Array 2DAddizione e sottrazione di matriciArray irregolariArray 3D e oltreSchemi comuni degli array 2DRiepilogo - Tutto sugli array4HashSet Parte 1
Che cos'è un HashSet?Aggiungere un elementoRimuovere un elementoVerificare se un elemento esisteVuoto e dimensioneSvuotare e clonareRipasso - HashSet7Gestione di base degli errori
Nozioni di base su try-catchBlocco finallyLancio di eccezioniEccezioni personalizzate2HashMap Parte 1
Che cos'è una HashMap?Dichiarare una HashMapAccedere ai valoriVerificare se una chiave esisteModificare i dizionariRiepilogo - HashMap3HashMap Parte 2
Metodi di HashMapIterare con keySet()Iterare con entrySet()HashMap annidateRiepilogo - Gestire il magazzinoRiepilogo - Operazioni con HashMap6Flusso di controllo avanzato
Istruzioni con etichettaEspressione switchCorrispondenza dei patternClausole guardiaRiepilogo - Flusso di controllo9Progetto - Contatore di parole uniche
Inserimento e memorizzazione del testoElaborazione delle paroleEsercitati da solo: Compilatore Java online