Domanda 1 Scrivere il codice del compareTo in modo tale che confronti due Studenti per età e a parità di questa per matricola import java.util.*; class Studente implements Comparable<Studente> { private String matricola; private int eta; public Studente(String matricola, int eta) { this.matricola = matricola; this.eta = eta; } public String getMatricola() { return this.matricola; } public int getEta() { return this.eta; } } public int compareTo(Studente that) { int eta = this.getEta()-that.getEta(); if(eta==0){ return this.getMatricola().compareTo(that.getMatricola()); } return eta; } public class Immatricolazioni { private List<Studente> elenco; public Immatricolazioni() { this.elenco = new ArrayList<Studente>(); } public void aggiungiStudente(Studente studente) { this.elenco.add(studente); } } public List<Studente> elencoOrdinatoPerEtaMatricola() { List<Studente> elencoOrdinato = new ArrayList<Studente>(); elencoOrdinato.addAll(this.elenco); Collections.sort(elencoOrdinato); return elencoOrdinato; } Domanda 2 Che cosa stampa questo programma? interface Vegetale { public void nonFaNulla(); } class Pianta implements Vegetale { public Pianta() {} public void nonFaNulla() {} } class Fungo implements Vegetale { public Fungo() {} public void nonFaNulla(){} } public class Quiz { public void scrivi(Vegetale v) { System.out.print("Vegetale "); } public void scrivi(Pianta p) { System.out.print("Pianta "); } public void scrivi(Fungo f) { System.out.print("Fungo "); } } public static void main(String args[]) { Quiz quiz = new Quiz(); Pianta p = new Pianta(); Fungo f = new Fungo(); Vegetale v = new Pianta(); v = f; quiz.scrivi(v); quiz.scrivi(p); quiz.scrivi(f); } Vegetale Pianta Vegetale Vegetale Pianta Fungo Pianta Pianta Fungo Fungo Pianta Fungo Domanda 3 Che cosa stampa questo programma? import java.util.*; class Strada { private String nome; public Strada (String nome) { this.nome = nome; } public void setNome (String n) { nome = n; } } public String getNome(){ return nome; } public class Quiz3 { public static void main(String[] argc) { List<Strada> l = new LinkedList<Strada>(); } } Strada a = new Strada("Appia"); l.add(a); a.setNome("Casilina"); a = new Strada("Laurentina"); l.add(a); Strada b; b = a; b.setNome("Cassia"); l.add(b); for(Strada s : l) System.out.print(s.getNome()+" "); Appia Cassia Laurentina Casilina Laurentina Cassia Casilina Cassia Cassia Appia Laurentina Cassia Domanda 4 Che cosa stampa questo programma? import java.util.*; abstract class Vegetale1 { public String cresceIn() { return "..."; } } class Cactus extends Vegetale1 { public String cresceIn() { return } "deserto"; } class Albero extends Vegetale1 { public String cresceIn() { return "bosco"; } } class Pero extends Albero { public String cresceIn() { return "frutteto"; } } public class Quiz4 { public static void main(String args[]) { List<Vegetale1> vegetali = new ArrayList<Vegetale1>(); Vegetale1 v = null; Albero a = new Albero(); Vegetale1 vc = new Cactus(); Albero ap = new Pero(); Pero p = new Pero(); v = a; vegetali.add(v); v = vc; vegetali.add(v); v = ap; vegetali.add(v); v = p; vegetali.add(v); } } for(Vegetale1 animale : vegetali) System.out.print(animale.cresceIn()+" "); bosco deserto frutteto frutteto ... ... ... ... bosco ... bosco frutteto bosco deserto ... frutteto Domanda 5 Che cosa stampa questo programma? import java.util.*; class ComparatoreImpiegati implements Comparator<Impiegato> { public int compare(Impiegato i1, Impiegato i2) { return (i1.getMatricola().compareTo(i2.getMatricola())); } } class Impiegato implements Comparable<Impiegato> { public String nome; public String matricola; public Impiegato(String n, String m) { this.nome = n; this.matricola = m; } public int compareTo(Impiegato i) { return this.nome.compareTo(i.getNome()); } public String getMatricola(){ return this.matricola; } } public String getNome(){ return this.nome; } public class Quiz5 { public static void main(String[] args) { List<Impiegato> elenco = new LinkedList<Impiegato>(); elenco.add(new Impiegato("Sara", "CCC")); elenco.add(new Impiegato("Vittorio", "AAA")); elenco.add(new Impiegato("Matteo", "RRR")); elenco.add(new Impiegato("Vittorio", "LLL")); Collections.sort(elenco, new ComparatoreImpiegati()); } } for(Impiegato impiegato : elenco) System.out.print(impiegato.getNome()+" "); Vittorio Vittorio Sara Matteo Vittorio Sara Vittorio Matteo Matteo Sara Vittorio Vittorio Nessuno dei precedenti Domanda 6 Che cosa stampa questo programma? import java.util.*; public class Quiz6 { public static void main(String[] argv) { Map<Integer,String> codice2marca; codice2marca = new HashMap<Integer,String>(); codice2marca.put(1, codice2marca.put(2, codice2marca.put(1, codice2marca.put(3, } } "Nissan"); "Fiat"); "Opel"); "Renault"); List<Integer> ll = new LinkedList<Integer>(codice2marca.keySet()); Collections.sort(ll); Iterator<Integer> i = ll.iterator(); while (i.hasNext()) System.out.print(codice2marca.get(i.next())+" "); Fiat Nissan Opel Renault Nissan Fiat Renault Nissan Opel Fiat Renault Opel Fiat Renault Domanda 7 Che cosa stampa questo programma? class Giocoliere { private String attrezzo; public Giocoliere(String attrezzo) { this.attrezzo = attrezzo; } public String getAttrezzo() { return attrezzo; } } public void setAttrezzo(String attrezzo) { this.attrezzo = attrezzo; } class MaestroGiocoliere { public void assegnaAttrezzo(Giocoliere giocoliere, String nuovoAttrezzo) { giocoliere.setAttrezzo(nuovoAttrezzo); } } public class Quiz7 { public static void main(String[] args) { MaestroGiocoliere maestro = new MaestroGiocoliere(); Giocoliere leonardo = new Giocoliere("Palline"); Giocoliere alessio = leonardo; System.out.print(alessio.getAttrezzo()+" "); System.out.print(leonardo.getAttrezzo()+" "); System.out.print("- "); maestro.assegnaAttrezzo(alessio, "Cerchi"); System.out.print(alessio.getAttrezzo()+" "); System.out.print(leonardo.getAttrezzo()+" "); System.out.print("- "); } } maestro.assegnaAttrezzo(leonardo, "Clave"); System.out.print(alessio.getAttrezzo()+" "); System.out.print(leonardo.getAttrezzo()+" "); Palline - Cerchi Palline - Cerchi Clave Palline Palline - Cerchi Palline - Cerchi Clave Palline Palline - Cerchi Cerchi - Clave Clave Palline Palline - Cerchi Palline - Clave Palline Domanda 8 Che cosa stampa questo programma? class Albero { public void innesta(Albero a) { System.out.print("Albero.innesta(Albero) "); altezza(); } } } } public void innesta(Pero b) { System.out.print("Albero.innesta(Pero) "); altezza(); public void altezza() { System.out.print("Albero.altezza()"); class Pero extends Albero { public void innesta(Albero a) { System.out.print("Pero.innesta(Albero) "); altezza(); } public void innesta(Pero b) { System.out.print("Pero.innesta(Pero) "); altezza(); } } public void altezza() { System.out.print("Pero.altezza()"); } public class Quiz { public static void main(String args[]) { Albero a = new Pero(); Albero b = new Albero(); } } a.innesta(b); Pero.innesta(Pero) Pero.altezza() Pero.innesta(Albero) Albero.altezza() Albero.innesta(Albero) Albero.altezza() Pero.innesta(Albero) Pero.altezza() Domanda 9 Scrivi il metodo autore2canzoni() in modo tale da soddisfare le specifiche: raggruppando tutte le canzoni per autore in una mappa import java.util.*; class Canzone { private String titolo; private String autore; public Canzone(String titolo, String autore) { this.titolo = titolo; this.autore = autore; } public String getAutore() { return this.autore; } public String getTitolo() { return this.titolo; } } public class RaggruppatoreCanzoniPerAutore { private List<Canzone> elencoCanzoni; public RaggruppatoreCanzoniPerAutore(){ this.elencoCanzoni = new ArrayList<Canzone>(); } public void aggiungiCanzone(Canzone canzone) { this.elencoCanzoni.add(canzone); } public Map<String, List<Canzone>> autore2canzoni() { Map<String, List<Canzone>> autore2canzoni = new HashMap<String, List<Canzone>>(); for (Canzone i: this.elencoCanzoni){ List<Canzone> lista = autore2canzoni.get(i.getAutore()); if(lista!=null){ lista.add(i); } else { lista = new ArrayList<Canzone>(); lista.add(i); autore2canzoni.put(i.getAutore(), lista); } } } } return autore2canzoni;