Diferencia entre el Mapa y las Propiedades, ya que ambos tienen pares clave-valor.Cuándo usar Propiedades y cuándo Mapa en Java?
Respuesta
Un mapa está destinado para el uso de par clave-valor normal en el código. Las propiedades se usan generalmente para almacenar y cargar valores de configuración de un archivo. La implementación subyacente de un Propiedades utiliza un Mapa.
Consulte el siguiente enlace para obtener un tutorial rápido sobre cómo y cuándo usar las Propiedades.
http://docs.oracle.com/javase/tutorial/essential/environment/properties.html
La clase de propiedades implementa la interfaz de mapa. La clase de propiedades tiene métodos para guardar su contenido en una secuencia.
vistazo a: http://java.sun.com/j2se/1.3/docs/api/java/util/Properties.html
Si no necesita guardar el contenido, quedarse con un mapa de implementación "normal" como HashMap
Propiedades se utiliza principalmente para los datos de configuración basada y localización, mientras Mapa es más general de uso.
Un objeto de propiedades es un mapa. Ver por ejemplo http://java.sun.com/javase/6/docs/api/java/util/Properties.html. Es decir. la clase Propiedades implementa la interfaz de Mapa.
De acuerdo con la documentación,
- Map es una interfaz
- Properties es una clase que implementa la interfaz
propiedades es-A mapa que IS-una tabla hash. Si debería ser o no es una pregunta diferente, creo que realmente debería obtener el mapa a través de la composición y no implementar la interfaz del mapa.
La clase de propiedades es para archivos de propiedades; es por eso que tiene métodos de carga para leer el archivo. Por lo tanto, si está trabajando con archivos de propiedades, p.
propa = bob
propb = jane
luego use Propiedades. De lo contrario, querrás crear tu propia interfaz de Mapa y elegir una implementación adecuada, p. HashMap
Utilice una clase que está implementando la interfaz de Mapa, pero no es la clase Propiedades. La clase de Propiedades está rota. Dado que se trata de una Hashtable debajo, existen métodos que romperían el mapeo String-to-String por lo demás consistente. Su invariante se rompe muy fácilmente (tanto por error como a propósito). Use cualquier otra cosa implementando la interfaz de Mapa. Si busca la seguridad de subprocesos: use Collections.synchronizedMap (myUnsyncdMap) para crear uno.
Lo ideal es que no haya diferencia entre las dos clases que no sean uno o dos métodos mencionados en las otras respuestas. Sin embargo, la implementación de Propiedades es realmente extraña: otras clases, derivadas de la interfaz de Map, son mucho más seguras, proporcionan una mejor tipificación estadística y son probablemente más rápidas (dependiendo de lo que necesites). Echando un vistazo rápido a la aplicación (en concreto, que la clase se deriva de) debería ser suficiente para convencer a evitarlo :)
Properties
es una Facade para Map<String,String>
+ algunos métodos de E/S.
¿Necesita los métodos de E/S? Úselo: no.
A por sistema predeterminado de clave es otra característica de Properties
no presente en Hashtable
es. Por ejemplo:
Properties p0 = new Properties();
p0.setProperty("a", "0");
p0.setProperty("b", "1");
Properties p1 = new Properties(p0);
p1.setProperty("a", "10");
assert p1.getProperty("a").equals("10");
assert p1.getProperty("b").equals("1");
assert p1.getProperty("c") == null;
Los valores predeterminados se buscan recursivamente en las propiedades principales.
- 1. Cuándo usar atributos vs. cuándo usar propiedades en python?
- 2. Cuándo usar `zipmap` y cuándo` map vector`?
- 3. ¿Cuándo usar == y cuándo usarlo?
- 4. Cuándo usar categorías y cuándo usar subclases?
- 5. Cuándo usar undef_method, y cuándo usar remove_method?
- 6. cuándo usar Tarea y cuándo usar Subproceso?
- 7. Cuándo usar Pepino y cuándo usar RSpec?
- 8. Java: ¿cuándo usar Iterators?
- 9. ¿Cuándo debe usar JCR y cuándo debe usar JPA/RDBMS?
- 10. Cuándo usar GWT y cuándo no
- 11. Cuándo usar atributos en lugar de propiedades?
- 12. Cuándo usar sincronizado en Java
- 13. Cuándo usar Class.isInstance() y cuándo usar el operador instanceof?
- 14. BitmapCache? ¿Cuándo y cómo usar?
- 15. Cuándo usar las variables de instancia y cuándo usar las propiedades
- 16. Cuándo usar Restringir y cuándo no a
- 17. Cuándo usar .mdf y cuándo .sdf?
- 18. Cuándo usar OSGi EventAdmin y cuándo no?
- 19. Cuándo usar componentes y cuándo usar extensiones en Yii?
- 20. Cuándo usar vectores y cuándo usar matrices en C++?
- 21. Cuándo usar dup, y cuándo usar clon en Ruby?
- 22. ¿Cuándo debería usar TCP_NODELAY y cuándo TCP_CORK?
- 23. cuándo deberíamos usar instanceof y cuándo no
- 24. ¿Cuándo debería usar Silverlight y cuándo XNA?
- 25. Cuándo usar las propiedades get y set en C#
- 26. ¿Cuándo tiene sentido usar un mapa?
- 27. Colecciones Java: ¿qué colección usar y cuándo?
- 28. Cuándo usar colecciones frente a propiedades múltiples
- 29. ¿Cómo decide Hive cuándo usar map reduce y cuándo no?
- 30. Cuándo usar "nuevo" y cuándo no hacerlo, en C++?
Retificación: Propiedades IS-A Hashtable que IS-A Map. – BalusC