Utilizzo del metodo entrySet() in Java

#1
Buongiorno,

per favore qualcuno mi potrebbe spiegare in modo semplice il funzionamento del metodo entrySet in Java.

Mi sto esercitando con gli Stream, ma quando cerco di utilizzare entrySet per creare una mappa, invertendo chiave e valore, eclipse non mi consente di utilizzare getKey e getValue.
Riporto qui sotto il codice

Ho creato la classe Appello:

import java.time.LocalDate;
import java.util.Scanner;

public class Appello {

private String corso;
private LocalDate data;
private int n;


public Appello(String corso, LocalDate data, int n) {
super();
this.corso = corso;
this.data = data;
this.n = n;
}


/**
* @return the corso
*/
public String getCorso() {
return corso;
}


/**
* @return the data
*/
public LocalDate getData() {
return data;
}


/**
* @return the n
*/
public int getN() {
return n;
}


/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Appello [corso=" + corso + ", data=" + data + ", n=" + n + "]";
}

public static Appello genAppello(String linea){

Scanner s=new Scanner(linea);
Appello appello=null;

try{

String corso=s.next();
LocalDate data=LocalDate.parse(s.next());
int n=s.nextInt();
appello=new Appello(corso,data,n);

}
catch(Exception e)
{System.out.println(linea +" liena errata!!! ");}

finally {s.close();}
return appello;
}


}

Mentre nel Main cerco di creare una mappa con i corsi degli iscritti ordinati in ordine decrescente.
Prima ho fatto contare gli iscritti per corsi ordinati. Successivamente dovei raggruppare i corsi per n° di iscritti in ordine descrescente.
Qui sotto ho riportato il risultato come dovrebbe essere fatto, ma eclipse non mi trova ne getValue e ne getKey quando vado a richiamarli.
Aggiungo che quanto scritto sotto è stato preso da un eserciziario.

SortedMap<Integer,List<String>> iscrittiPerCorso1=listaAppelliDaFile1.stream()
.collect(groupingBy(Appello::getCorso,TreeMap::new,summingInt(Appello::getN)))
.entrySet().stream()
.collect(groupingBy(e->e.getValue(),()->new TreeMap<Integer,List<String>>(reverseOrder()),
mapping(e->e.getKey(), toList()));

Non capisco per quale motivo Eclipse me lo segnala.

Per favore qualcuno mi può dare una mano a capire il corretto funzionamento e dove sto sbagliando?

Grazie a tutti.
 

Skills07

Moderatore
Staff Forum
7,719
1,833
Hardware Utente
CPU
Ryzen 7 2700x
Dissipatore
Stock
Scheda Madre
Aourus Gigabyte X-470
Hard Disk
Samsung Evo 850 250gb,2tb toshiba, 500gb western digital, 160gb segate
RAM
16 gb G.Skill Tridentz 3200 mhz RGB
Scheda Video
Sapphire RX 580 8gb ddr5
Monitor
Samsung Smart TV Full HD 50 Pollici/ Hp ES 24 IPS
Alimentatore
XFX 80 plus 750 watt
Case
Aerecool xpredator x3
Sistema Operativo
Windows 10 Pro 64
#2
ciao usa il tag codice perchè altrimenti non si capisce nulla
 
#3
ciao usa il tag codice perchè altrimenti non si capisce nulla
Grazie per aver letto la mia richiesta. Non sono molto pratico con il forum. Grazie per il suggerimento.
Per quanto riguarda la mia richiesta, sono riuscito a risolvere. Preso dalla disperazione, nonostante la segnalazione di errore di eclipse ho completato lo script, e dopo aver chiuso l'istruzione e salvato, eclipse non mi ha più segnalato nulla. Boh...

Grazie

Inviato da WAS-LX1A tramite App ufficiale di Tom\'s Hardware Italia Forum
 

_Achille

Utente Attivo
2,961
676
Hardware Utente
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
Hard Disk
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
Scheda Video
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
Alimentatore
RM550X
Case
NZXT S340
Periferiche
Cooler Master XT; Razer Abyssus
Sistema Operativo
Windows 10 Pro
#4
Grazie per aver letto la mia richiesta. Non sono molto pratico con il forum. Grazie per il suggerimento.
Per quanto riguarda la mia richiesta, sono riuscito a risolvere. Preso dalla disperazione, nonostante la segnalazione di errore di eclipse ho completato lo script, e dopo aver chiuso l'istruzione e salvato, eclipse non mi ha più segnalato nulla. Boh...

Grazie

Inviato da WAS-LX1A tramite App ufficiale di Tom\'s Hardware Italia Forum
[ CODE ] [ / CODE] senza spazi e in mezzo metti codice
Java:
class Program {

    public static void main() {

    }
}
Aggiungi un =JAVA se il codice è in JAVA
 

Discussioni Simili


Entra