Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Java HashMap

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    34

    Java HashMap

    Salve, vorrei porre una domanda sulle Collection HashMap.
    E' meglio usare (in termini di costo operazionale)

    if (myHashMap.containsKey(codice)){
    myObj = myHashMap.get(codice)
    ...
    }

    o direttamente

    myObj = myHashMap.get(codice);
    if (myObj != null)
    ...

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Java HashMap

    Originariamente inviato da Vik27
    E' meglio usare (in termini di costo operazionale)

    if (myHashMap.containsKey(codice)){
    myObj = myHashMap.get(codice)
    ...
    }

    o direttamente

    myObj = myHashMap.get(codice);
    if (myObj != null)
    ...
    Tecnicamente, come prestazioni, il secondo è meglio. Sia get() che containsKey() alla fin fine fanno praticamente la stessa logica di scansione nella mappa, solo che containsKey non torna il valore ma solo se ha trovato la chiave. E chiaramente nel primo caso fai 2 volte quasi la stessa cosa, appunto.

    Ma ... c'è anche da considerare un'altra cosa. HashMap accetta 1 chiave null ma sopratutto per ogni chiave non-null accetta un valore null. Se per come usi e gestisci la mappa c'è la possibilità che i tuoi valori siano null ... allora se hai bisogno di capire se la chiave esiste o no, devi usare containsKey, perché solo con get() non potresti distinguere se la chiave non c'è o se c'è ma il value è null.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Java HashMap

    Originariamente inviato da Vik27
    Salve, vorrei porre una domanda sulle Collection HashMap.
    E' meglio usare (in termini di costo operazionale)

    if (myHashMap.containsKey(codice)){
    myObj = myHashMap.get(codice)
    ...
    }

    o direttamente

    myObj = myHashMap.get(codice);
    if (myObj != null)
    ...

    Grazie
    Dipende.
    La seconda è più veloce (millisecondi....) ma se la key non esiste ti va in NullPoint e devi gestire l'eccezione....Quindi se di per certo la mappa contiene quei key è meglio la seconda, altrimenti se non lo sai tanto vale usare la prima.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    34
    GRazie!

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.