Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    problema metodo con HashMap(mi serve per esame all'uni)

    ho queste classi:
    [PHP]public interface Articolo {

    public int getCostoUnitario();

    public String getCodice();
    }/PHP]

    Codice PHP:
    public class Disco implements Articolo {
        private 
    String codice;
        private 
    int costoUnitario;

        public 
    Disco(String codiceint costoUnitario) {
            
    this.codice codice;
            
    this.costoUnitario costoUnitario;
        }

        public 
    String getCodice() { 
            return 
    this.codice;
        }

        public 
    int getCostoUnitario() {
            return 
    this.costoUnitario;
        }

        public 
    boolean equals(Object o) {
            
    Disco d = (Disco)o;
            return 
    this.codice.equals(d.getCodice());
        }

        public 
    int hashCode() {
            return 
    this.codice.hashCode();
        }
        
        public 
    String toString() {
            return 
    "Disco: " this.codice "," this.costoUnitario;
        }

    Codice PHP:
    public class Libro implements Articolo {
        private 
    String codice;
        private 
    int costoUnitario;

        public 
    Libro(String codiceint costoUnitario) {
            
    this.codice codice;
            
    this.costoUnitario costoUnitario;
        }
        
        public 
    String getCodice() {
            return 
    this.codice;
        }
        
        public 
    int getCostoUnitario() {
            return 
    this.costoUnitario;
        }
        
        public 
    boolean equals(Object o) {
            
    Libro l = (Libro)o;
            return 
    this.codice.equals(l.getCodice());
        }
        
        public 
    int hashCode() {
            return 
    this.codice.hashCode(); 
        }
        
        public 
    String toString() {
            return 
    "Libro: " this.codice "," this.costoUnitario;
        }

    Codice PHP:
    import java.util.*;

    public class 
    ComparatorePerCosto implements Comparator<Articolo> {
        
        public 
    int compare(Articolo a1,Articolo a2) {
            return 
    a1.getCostoUnitario()-a2.getCostoUnitario();
        }

    Codice PHP:
    import java.util.*;

    public class 
    Magazzino {
        private 
    Map<Articolo,Integerarticolo2quantita;

        public 
    Magazzino() {
            
    this.articolo2quantita = new HashMap<Articolo,Integer>();
        }
        
        public 
    void aggiungiArticolo(Articolo articoloint quantita) {
            
    this.articolo2quantita.put(articolo,quantita);
        }
        
        public 
    Set<ArticologetArticoli() {
            return 
    this.articolo2quantita.keySet();    
        }
        
        public 
    int calcolaValoreMagazzino() {
            
    int valore 0;
            
    Set<Articoloarticoli this.getArticoli();
            for (
    Articolo a articoli) {
                
    int quantitaDiA this.articolo2quantita.get(a);
                
    valore += a.getCostoUnitario() * quantitaDiA;
            }
            
    // DOMANDA 2: scrivere codice mancante
            
    return valore;
        }
        
        public 
    Map<Integer,Set<String>> articoliEconomici(int soglia) {
            
    // costo -> insieme di codici di articoli con il costo della chiave
            
    Map<Integer,Set<String>> costo2insiemeCodiceArticoli = new HashMap<Integer,Set<String>>();
            
    Set<Stringcodici = new HashSet<String>();
            for (
    Articolo a this.getArticoli()) {
                if (
    a.getCostoUnitario() < soglia) {
                    
    int costoOk a.getCostoUnitario();
                    
    codici.add(a.getCodice());
                    
    costo2insiemeCodiceArticoli.put(costoOk,codici);
                }
            }
            
            
    // DOMANDA 3: scrivere codice mancante
            
    return costo2insiemeCodiceArticoli
        }
        
        public List<
    ArticoloarticoliOrdinatiPerCosto() {
            List<
    ArticololistaArticoli = new LinkedList<Articolo>();
            
    // DOMANDA 4: scrivere codice mancante
            
    for (Articolo a this.getArticoli()) {
                
    listaArticoli.add(a);
            }
            
    Collections.sort(listaArticoli,new ComparatorePerCosto());
            return 
    listaArticoli;
        }
        
        public static 
    void main(String[] args) {
            
    Articolo libro1 = new Libro("090",30);
            
    Articolo disco1 = new Disco("080",20);
            
    Articolo disco2 = new Disco("070",5);
            
    Articolo libro2 = new Libro("050",6);
            
    Articolo libro3 = new Libro("030",10);
            
    Articolo disco3 = new Disco("040",6);
            
    Magazzino magazzino = new Magazzino();
            
    magazzino.aggiungiArticolo(libro1,10);
            
    magazzino.aggiungiArticolo(disco1,20);
            
    magazzino.aggiungiArticolo(disco2,14);
            
    magazzino.aggiungiArticolo(libro2,12);
            
    magazzino.aggiungiArticolo(libro3,12);
            
    magazzino.aggiungiArticolo(disco3,10);
            
    System.out.println(magazzino.getArticoli());
            
    System.out.println(magazzino.calcolaValoreMagazzino());
            
    System.out.println(magazzino.articoliEconomici(10));
            
    System.out.println(magazzino.articoliOrdinatiPerCosto());
        }

    il metodo che non va correttamente è questo:
    public Map<Integer,Set<String>> articoliEconomici(int soglia)
    La domanda dell'esercizio dice:
    Scrivere il codice del metodo Map<Integer,Set<String>> articoliEconomici(int soglia) questo metodo
    restituisce in una mappa gli articoli il cui costo unitario è inferiore ad una soglia (passata come parametro al metodo). Chiave
    della mappa è un intero, che rappresenta un costo unitario; la mappa associa alla chiave un insieme dei codici degli articoli
    che hanno costo unitario pari a quello della chiave (che comunque è inferiore alla soglia).
    Nel MAIN ho fatto alcune prove, e con System.out.println(magazzino.articoliEconomici(10) ); dovrebbe stampare {5=[070] , 6=[050,040]} .Invece mi stampa {5=[040,050,070] , 6=[040,050,070]}. Non so come modificare il metodo articoliEconomici(int soglia)...
    spero mi aiuterete...
    Per una battaglia sono sempre a disposizione

  2. #2
    PLEASE HELP ME....
    Per una battaglia sono sempre a disposizione

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.