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.
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.