2012-02-27 5 views

risposta

11

Sono simili, ma dal punto di vista di design, la classe Properties è considerato uno degli "errori" di Java, perché è un Hashtable (invece di utilizzare un Hashtable). Dovrebbe essere stata un'interfaccia.

Utilizzare sempre l'astratto, ove possibile, quindi questo è preferito:

Map<String, String> stuff = new HashMap<String, String>(); 

tendono ad evitare usando Properties meno che non si dispone di a.

+3

Intendevi Hashtable?:) (l'ortografia incoerente è anche un esempio di errori Java) – Lukasz

+0

LOL - Non l'ho mai notato :) – Bohemian

2

Propties estende Hashtable, che è sincronizzato per impostazione predefinita. HashMap non è sincronizzato per impostazione predefinita. Stai scambiando la sicurezza dei thread incorporata per un leggero miglioramento delle prestazioni, che probabilmente non sarai in grado di misurare.

Proprietà è una classe precedente da Java 1.0. HashMap fa parte delle nuove API di Joshua Bloch.

0

java.util.Properties è un Hashtable<Object,Object> quindi si può vedere come una forma sincronizzata di java.util.HashMap<String, String>

Proprietà è piacevole da maneggiare ... proprietà:) Se lo si utilizza per altri scopi, allora la vostra scelta dipenderà dalla concorrenza gestione nel tuo programma

2

Hai il moderno ConcurrentHashMap<String, String> per la sicurezza del filo. Non utilizzare realmente Properties a meno che non lo si stia utilizzando per leggere un file .properties.

1

classe Le proprietà è un'estensione del Hashtable, in pratica l'aggiunta di funzionalità di scrivere + leggere da un disco in un formato insieme (coppie di valori di testo come questo):

key1=value1 
key2=value2 

Se si desidera memorizzare su disco e usa quel formato quindi usa una Proprietà, altrimenti usa una HashMap o Hashtable.

16

Ci sono diversi scopi di queste due classi di utilità. Mappa, o nel tuo caso, HashMap è un oggetto di archiviazione generico in cui hai una chiave univoca e valori a cui puntano. HashMap può avere qualsiasi tipo di oggetto come chiave e qualsiasi tipo di oggetto come loro valori.

java.util.Properties è, tuttavia, una mappa di scopo speciale. È sviluppato per leggere/scrivere da/a file di proprietà. Ha metodi speciali per farlo [vedi load(..)]. La mappa no.

Quindi, avete diverse situazioni per usarli. Luoghi in cui hai bisogno di proprietà da leggere, è meglio andare con Proprietà. E i punti in cui si desidera che i valori di ricerca vengano archiviati in base a una logica, vanno con HashMap<String, String>.

Non esiste una regola semplice e veloce, è possibile utilizzare HashMap<String, String> e Properties in modo intercambiabile. Ma come ingegnere, utilizzare lo strumento corretto per l'attività.