Chciałam tylko wiedzieć. Jakie są różnice między java.util.Properties
Vs java.util.HashMap<String, String>
? Który jest lepszy?java.util.Properties Vs java.util.Map <String, String>
Odpowiedz
Są one podobne, ale z punktu widzenia projektowania, klasa Properties
jest uważany za jeden z „błędów” w Javie, ponieważ jestHashtable
(zamiast użyciu hashtable). To powinien być interfejs.
gdzie jest to możliwe należy zawsze używać streszczenie, więc jest to korzystne:
Map<String, String> stuff = new HashMap<String, String>();
unikają korzystania Properties
chyba masz do.
Propeties rozszerza Hashtable, która jest domyślnie zsynchronizowana. HashMap nie jest domyślnie synchronizowany. Zajmujesz się wbudowanym bezpieczeństwem wątków, by poprawić wydajność, której prawdopodobnie nie będziesz w stanie zmierzyć.
Właściwości to starsza klasa z Javy 1.0. HashMap jest częścią nowego API kolekcji Joshua Bloch.
java.util.Properties
jest Hashtable<Object,Object>
dlatego można go zobaczyć jako zsynchronizowany postaci java.util.HashMap<String, String>
Properties jest miła w obsłudze ... właściwości:) Jeśli używamy go do innych celów, wtedy wybór będzie zależał od współbieżności zarządzanie w twoim programie
Masz współczesny ConcurrentHashMap<String, String>
dla bezpieczeństwa wątku. Naprawdę nie używaj Properties
, chyba że używasz go do odczytu pliku .properties
.
Właściwości klasa jest rozszerzeniem Hashtable, w zasadzie dodanie funkcjonalności napisać + odczytać z dysku w formacie Set (par value tekst jak ten):
key1=value1
key2=value2
Jeśli chcesz zapisać go na dysku i użyj tego formatu, a następnie użyj Właściwości, w przeciwnym razie użyj HashMap lub HashTable.
Istnieją różne cele tych dwóch klas użytkowych. Map, lub w twoim przypadku, HashMap to obiekt pamięci masowej ogólnego przeznaczenia, w którym masz unikalny klucz i wartości, na które wskazują. HashMap może mieć dowolny typ obiektu jako swój klucz i dowolny typ obiektu jako ich wartości.
java.util.Properties jest jednak mapą specjalnego przeznaczenia. Jest opracowany do odczytu/zapisu z/do plików właściwości. Ma specjalne metody, aby to zrobić [patrz load(..)
]. Mapa nie.
Masz różne sytuacje, aby z nich korzystać. Miejsca, w których potrzebujesz właściwości do czytania, lepiej wybierz Właściwości. I miejsca, w których chcesz mieć wartości wyszukiwania zapisane z pewnej logiki, idziesz z HashMap<String, String>
.
Nie ma sztywnej zasady, można używać zamiennie HashMap<String, String>
i Properties
. Ale jako inżynier skorzystaj z odpowiedniego narzędzia dla zadania.
Dup http://stackoverflow.com/questions/40471/differences-between-hashmap-and-hashtable – Jivings