2012-02-27 6 views

Odpowiedz

11

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.

+3

Masz na myśli Hashtable?:) (niespójna pisownia jest również przykładem błędów Java) – Lukasz

+0

LOL - Nigdy tego nie zauważyłem :) – Bohemian

2

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.

0

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

2

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.

1

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.

16

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.