Когда использовать свойства и когда Map в Java?

Разница между Map и Properties, так как у обоих есть пара ключей.

Ответы

Ответ 1

Карта предназначена для обычного использования пары ключ-значение в коде. Свойства обычно используются для хранения и загрузки значений конфигурации из файла. В базовой реализации свойства используется Карта.

См. приведенную ниже ссылку для быстрого руководства о том, как и когда использовать свойства.

http://docs.oracle.com/javase/tutorial/essential/environment/properties.html

Ответ 2

Properties является Facade для Map<String,String> + некоторых методов ввода/вывода.

Вам нужны методы ввода-вывода? используйте его: не делайте.

Ответ 3

Использовать класс, реализующий интерфейс Map, но не класс Properties. Класс Properties сломан. Поскольку это Hashtable внизу, существуют методы, которые нарушали бы в противном случае сопоставление String-to-String. Его инвариант очень легко ломается (как по ошибке, так и по назначению). Используйте что-либо еще, реализуя интерфейс карты. Если вы нацелены на безопасность потоков - используйте Collections.synchronizedMap(myUnsyncdMap), чтобы создать его.

В идеале нет разницы между двумя классами, отличными от 1 или двух методов, упомянутых в других ответах. Однако реализация свойств на самом деле причудлива - другие классы, основанные на интерфейсе карты, намного безопаснее, обеспечивают лучшую статическую типизацию и, вероятно, быстрее (в зависимости от того, что вам нужно). Быстро посмотреть на реализацию (в частности, какой класс он получает) должно быть достаточно, чтобы убедить вас избежать этого:)

Ответ 4

Класс свойств реализует интерфейс Map. Класс свойств содержит методы для сохранения его содержимого в потоке.

посмотреть: http://java.sun.com/j2se/1.3/docs/api/java/util/Properties.html

Если вам не нужно сохранять контент, оставайтесь с "нормальной" реализацией карты, например, HashMap

Ответ 5

Свойства в основном используются для данных конфигурации и локализации, тогда как карта более универсальна.

Ответ 7

В соответствии с документами

  • Map - это интерфейс
  • Properties - это класс, реализующий этот интерфейс

Ответ 8

Свойства IS-A Карта, которая представляет собой IS-A Hashtable. Должен ли это или нет другой вопрос - я думаю, что он должен действительно получить карту через композицию и не реализовать интерфейс карты.

Класс свойств предназначен для файлов свойств - поэтому у него есть методы загрузки на нем для чтения файла. Поэтому, если вы работаете с файлами свойств, например.

propa = bob
propb = jane

затем используйте Свойства. В противном случае вы захотите создать свой собственный интерфейс карты и выбрать подходящую реализацию, например. HashMap

Ответ 9

A для каждой стандартной системы по умолчанию - это еще одна особенность Properties, отсутствующая в Hashtable. Например:.

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;

Установки по умолчанию рекурсивно ищутся в родительских свойствах.