Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152

    [JAVA] HashMap esercizio

    Salve ho un problema ho il seguente esercizio e non so come risolverlo.
    devo ordinare tramite un HashMap<Integer , List<Persone>> in base all età, cioè per ogni età ci sarà una lista di persone... non riesco a trovare un algoritmo adatto qualcuno mi può dare una mano?
    questo è il codice l esercizio da fare è quello commentato

    codice:
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class ElencoPersone3 {
        private List<Persona> elenco;
        
        public ElencoPersone3(){
            this.elenco = new ArrayList<Persona>();
        }
    
        public void aggiungiPersona(Persona persona) {
            this.elenco.add(persona);
        }
    /* ---- QUESTO è L'ESERCIZIO ---*/
        public Map<Integer, List<Persona>> eta2persona() {
            Map<Integer, List<Persona>> eta2persona = new HashMap<Integer, List<Persona>>(); 
            // scrivere il codice di questo metodo
            // deve ritornare una mappa che ha per chiave un eta'
            //   per valore una lista delle persone di elenco con eta' uguale alla chiave
            return eta2persona;
        }
    }
    
    class Persona {
        private String nome;
        private int eta;
        
        public Persona(String nome, int eta) {
            this.nome = nome;
            this.eta = eta;
        }
    
        public int getEta() {
            return this.eta;
        }
        
        public String getNome() {
            return this.nome;
        }
    }

  2. #2

    Re: [JAVA] HashMap esercizio

    Originariamente inviato da keykode20
    Salve ho un problema ho il seguente esercizio e non so come risolverlo.
    devo ordinare tramite un HashMap<Integer , List<Persone>> in base all età, cioè per ogni età ci sarà una lista di persone... non riesco a trovare un algoritmo adatto qualcuno mi può dare una mano?
    codice:
    Scorri la lista delle persone
        se la chiave età non è presente nella mappa
            istanzi una lista, ci aggiungi la persona e inserisci la coppia
        altrimenti aggiungi la persona

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    ti ringrazio per l aiuto ma non riesco a capire perchè non funziona... qualcuno riesce a capire dov'è che sbaglio?

    codice:
     
    package domanda1;
    
    import java.util.*;
    
    public class ElencoPersone3 {
        private List<Persona> elenco;
        
        public ElencoPersone3(){
            this.elenco = new ArrayList<Persona>();
        }
    
        public void aggiungiPersona(Persona persona) {
            this.elenco.add(persona);
        }
        public Map<Integer, List<Persona>> eta2persona() {
            Map<Integer, List<Persona>> eta2persona = new HashMap<Integer, List<Persona>>(); 
            int i;
            int k;
            Persona a;
            List<Persona> list=new ArrayList<Persona>();
            for(i=0; i<this.elenco.size(); i++){
            a = this.elenco.get(i);
            k = a.getEta();
            if(!eta2persona.containsKey(k))
            while(this.elenco.iterator().hasNext()){
            	if(this.elenco.iterator().next().getEta()==k)
            		list.add(this.elenco.iterator().next());
            	this.elenco.iterator().next();
            }
            eta2persona.put(k,list);
            }
            return eta2persona;
        }
        public static void main(String[] args){
        	ElencoPersone3 elenco=new ElencoPersone3();
        	Persona p1;
    		Persona p2;
    		Persona p3;
    		p1 = new Persona("Emilio", 10);
    		p2 = new Persona("Stefano", 13);
    		p3 = new Persona("Mario", 1);
    		Map<Integer, List<Persona>> map = new HashMap<Integer, List<Persona>>();
    		map = elenco.eta2persona();
    		System.out.println(map.toString());
        }
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    scusate non ho specificato qual'è l errore...
    il compilatore mi segna che :

    codice:
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    	at java.util.Arrays.copyOf(Unknown Source)
    	at java.util.Arrays.copyOf(Unknown Source)
    	at java.util.ArrayList.grow(Unknown Source)
    	at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
    	at java.util.ArrayList.add(Unknown Source)
    	at domanda1.ElencoPersone3.eta2persona(ElencoPersone3.java:27)
    	at domanda1.ElencoPersone3.main(ElencoPersone3.java:46)
    ho pensato che forse sto usando male l iteratore...
    stavo pensando che forse facendo "this.elenco.iterator().next();"
    non considera l elemento corrente ma bensì il prossimo...
    nel caso questo mio sospetto fosse vero, come faccio a puntare all elemento attuale della lista? nessuno dei metodi iterator() mi da un metodo che ritorna "Persona" a parte next()

  5. #5
    L'algoritmo che hai definito non è corretto, anche perchè non serve scorrere due volte elenco. Se leggi bene la API di HashMap, vedrai che puoi definire qualcosa di meglio.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.