Pregunta java.util.Properties Vs java.util.Map [duplicate]


Esta pregunta ya tiene una respuesta aquí:

Sólo quería saber. ¿Cuáles son las diferencias entre java.util.Properties Vs java.util.HashMap<String, String>? ¿Cuál es preferible?


11
2018-02-27 10:13


origen


Respuestas:


Son similares, pero desde una perspectiva de diseño, el Properties la clase se considera uno de los "errores" de Java, porque es un Hashtable (más bien que utilizando un Hashtable). Debería haber sido una interfaz.

Siempre use el resumen donde sea posible, por lo que se prefiere:

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

Tienden a evitar el uso Properties a menos que usted tener a.


11
2018-02-27 10:18



Hay un propósito diferente de estas dos clases de utilidad. Mapa, o en su caso, HashMap es un objeto de almacenamiento de propósito general donde tiene una clave única y valores a los que apuntan. HashMap puede tener cualquier tipo de objeto como su clave y cualquier tipo de objeto como sus valores.

java.util.Properties es, sin embargo, un mapa de propósito especial. Está desarrollado para leer / escribir desde / a archivos de propiedades. Tiene métodos especiales para hacerlo [ver load(..)] Mapa no.

Entonces, tienes diferentes situaciones para usarlos. Lugares donde necesita propiedades para leer, mejor vaya con Propiedades. Y los lugares en los que desea que los valores de búsqueda estén almacenados fuera de la lógica, vaya con HashMap<String, String>.

No hay una regla dura y rápida, puedes usar HashMap<String, String> y Properties indistintamente Pero como ingeniero, use herramienta correcta para la tarea.


20
2018-02-27 10:23



Propeties amplía Hashtable, que se sincroniza de forma predeterminada. HashMap no está sincronizado de forma predeterminada. Está intercambiando seguridad incorporada con hilos para una ligera mejora en el rendimiento, una que probablemente no podrá medir.

Properties es una clase más antigua de Java 1.0. HashMap es parte de la API de colecciones más nueva de Joshua Bloch.


2
2018-02-27 10:17



Tienes el día moderno ConcurrentHashMap<String, String> para seguridad de hilo. Realmente no uso Properties a menos que lo estés usando para leer un .properties archivo.


2
2018-02-27 10:18



La clase Propiedades es una extensión de Hashtable, que básicamente agrega funcionalidad para escribir + leer desde un disco en un formato establecido (pares de valores de texto como este):

key1=value1
key2=value2

Si desea almacenarlo en el disco y usar ese formato, utilice un Propiedades, de lo contrario use un HashMap o Hashtable.


1
2018-02-27 10:20



java.util.Properties es un Hashtable<Object,Object> por lo tanto, puede verlo como una forma sincronizada de java.util.HashMap<String, String>

Propiedades es bueno de manejar ... propiedades:) Si lo usa para otros fines, su elección dependerá de la administración de concurrencia en su programa


0
2018-02-27 10:18