Просто хотел знать. В чем разница между java.util.Properties
Vs java.util.HashMap<String, String>
? Что предпочтительнее?
Java.util.Properties Vs java.util.Map <String, String>
Ответ 1
Они похожи, но с точки зрения дизайна класс Properties
считается одной из "ошибок" java, потому что это Hashtable
(вместо использования Hashtable). Это должен был быть интерфейс.
Всегда используйте реферат, где это возможно, поэтому это предпочтительнее:
Map<String, String> stuff = new HashMap<String, String>();
Стремитесь избегать использования Properties
, если вам не нужно.
Ответ 2
Существуют разные цели этих двух классов. Карта или в вашем случае, HashMap - это объект хранения общего назначения, в котором у вас есть уникальный ключ и значения, на которые они указывают. HashMap может иметь любой тип объекта как свой ключ и любой тип объекта в качестве своих значений.
java.util.Properties - это, однако, карта специального назначения. Он разработан для чтения/записи из/в файлы свойств. Для этого есть специальные методы [см. load(..)
]. Карта не работает.
Итак, у вас есть разные ситуации для их использования. Места, где вам нужны свойства для чтения, лучше перейти с помощью свойств. И места, где вы хотите иметь значения поиска, сохраненные с некоторой логикой, вы идете с HashMap<String, String>
.
Нет жесткого и быстрого правила, вы можете использовать HashMap<String, String>
и Properties
взаимозаменяемо. Но как инженер, используйте правильный инструмент для выполнения задачи.
Ответ 3
Propeties расширяет Hashtable, которая по умолчанию синхронизируется. По умолчанию HashMap не синхронизируется. Вы торгуете встроенной безопасностью потоков для небольшого улучшения производительности, которое вы, вероятно, не сможете измерить.
Свойства - это более старый класс из Java 1.0. HashMap является частью нового API коллекций Joshua Bloch.
Ответ 4
У вас есть современная ConcurrentHashMap<String, String>
для обеспечения безопасности потоков. Не используйте Properties
, если вы не используете его для чтения файла .properties
.
Ответ 5
Класс Properties - это расширение Hashtable, в основном добавляющее функциональность для записи + чтения с диска в заданном формате (такие пары значений текста):
key1=value1
key2=value2
Если вы хотите сохранить его на диск и использовать этот формат, используйте Свойства, иначе используйте HashMap или Hashtable.
Ответ 6
java.util.Properties
является Hashtable<Object,Object>
, поэтому вы можете видеть его как синхронизированную форму java.util.HashMap<String, String>
Свойства хорошо обрабатывать... свойства:) Если вы используете его для других целей, ваш выбор будет зависеть от управления concurrency в вашей программе