Różnica między mapą a właściwościami, ponieważ obie mają parę klucz-wartość.Kiedy używać Właściwości i kiedy Mapę w Javie?
Odpowiedz
Mapa jest przeznaczona do normalnego klucz-wartość zużycia pary w kodzie. Właściwości są zwykle używane do przechowywania i ładowania wartości konfiguracyjnych z pliku. Podstawowa implementacja właściwości wykorzystuje mapę.
Zobacz poniższy link, aby zapoznać się z krótkim samouczkiem dotyczącym sposobu i czasu korzystania z funkcji Właściwości.
http://docs.oracle.com/javase/tutorial/essential/environment/properties.html
Klasa właściwości implementuje interfejs mapy. Klasa właściwości zawiera metody zapisywania jej zawartości w strumieniu.
spojrzenie: http://java.sun.com/j2se/1.3/docs/api/java/util/Properties.html
Jeśli nie trzeba zapisać zawartość, pobyt z „normalnym” Mapa Wdrażania jak HashMap
Properties jest wykorzystywany głównie do danych i konfiguracji opartych na lokalizacji, a mapa jest bardziej ogólnego przeznaczenia.
Obiekt właściwości jest mapą. Zobacz na przykład: http://java.sun.com/javase/6/docs/api/java/util/Properties.html. To znaczy. klasa Properties implementuje interfejs Map.
Zgodnie z docs,
- Map jest interfejsem
- Properties to klasa, która implementuje interfejs, który
Właściwości IS-mapę, która IS-hashtable. To, czy powinno, czy nie, to inne pytanie - myślę, że naprawdę powinien dostać Mapę poprzez kompozycję, a nie zaimplementować interfejs Mapy.
Klasa właściwości jest dla plików właściwości - dlatego ma metody ładowania, aby odczytać plik. Więc jeśli pracujesz z plikami właściwości, np.
propa = bob
propb = jane
następnie użyj Właściwości. W przeciwnym razie będziesz chciał stworzyć własny interfejs mapy i wybrać odpowiednią implementację, np. HashMap
Użyj klasy implementującej interfejs mapy, ale nie jest klasą właściwości. Klasa właściwości jest zepsuta. Ponieważ pod spodem znajduje się Hashtable, istnieją metody, które łamałyby spójne odwzorowanie String-to-String. Jego niezmiennik jest bardzo łatwo zepsuty (zarówno błędnie, jak i celowo). Użyj czegokolwiek innego implementującego interfejs mapy. Jeśli celujesz w bezpieczeństwo wątków - użyj Collections.synchronizedMap (myUnsyncdMap), aby je utworzyć.
Idealnie nie ma różnicy między dwiema klasami innymi niż jedna lub dwie metody wymienione w innych odpowiedziach. Jednak implementacja właściwości jest rzeczywiście dziwaczna - inne klasy, pochodzące z interfejsu mapy, są o wiele bezpieczniejsze, zapewniają lepsze pisanie statyczne i prawdopodobnie są szybsze (w zależności od potrzeb). Biorąc okiem na realizację (konkretnie jakiej klasy to wywodzi) powinno wystarczyć, aby przekonać się, aby tego uniknąć :)
Properties
jest Facade dla Map<String,String>
+ niektóre metody I/O.
Czy potrzebujesz metod we/wy? użyj go: nie rób tego.
A za kluczowy domyślnego systemu to kolejna cecha Properties
nie jest obecny w Hashtable
. Np .:
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;
Wartości domyślne są wyszukiwane rekursywnie we właściwościach nadrzędnych.
- 1. Kiedy używać "tego" w Javie
- 2. Kiedy używać viewDidLoad i kiedy używać awakeFromNib
- 3. Kiedy używać node.js i kiedy używać ajax?
- 4. kiedy używać zadania i kiedy używać wątku?
- 5. Konwencja dotycząca celu C: kiedy używać i kiedy używać z
- 6. Kiedy używać dup i kiedy używać klonu w Ruby?
- 7. Kiedy należy używać setUpClass i kiedy __init__?
- 8. Kiedy używać GWT i kiedy nie
- 9. Kiedy używać Formatera wartości i kiedy używać Resolvera wartości
- 10. Kiedy używać Requirejs i kiedy używać dołączonego javascript?
- 11. Kiedy należy używać JCR i kiedy należy używać JPA/RDBMS?
- 12. Kiedy używać klienta boto3 i kiedy używać zasobu Boto3?
- 13. Kiedy używać komponentów Seaside i kiedy używać prostych obiektów renderowania?
- 14. Kiedy używać JMS i kiedy używać usługi REST?
- 15. PHP: Kiedy używać funkcji i kiedy używać metod statycznych?
- 16. Kiedy używać zmiennych środowiskowych a właściwości systemu?
- 17. Kiedy używać undef_method i kiedy używać metody remove_method?
- 18. Kiedy używać tablicy bajtów i kiedy używać strumienia?
- 19. Kiedy używać LEFT JOIN i kiedy używać INNER JOIN?
- 20. Kiedy używać Class.isInstance() i kiedy używać operatora instanceof?
- 21. Kiedy używać czystej rekursji i kiedy używać pętli/recur?
- 22. Kotlin, kiedy delegować przez mapę?
- 23. Kiedy używać @ w widoku szyn i kiedy użyć symbolu?
- 24. Kiedy używać @Embedded i @Embeddable?
- 25. Kiedy używać Soapobject i SoapPrimitive
- 26. Kiedy używać NoSql i który?
- 27. Dlaczego i kiedy używać __noop?
- 28. Dlaczego i kiedy używać TreeMap
- 29. Kiedy używać Dependency Injection? Kiedy nie?
- 30. Kiedy używać łopatek RabbitMQ i kiedy wtyczka Federation?
Retribution: Właściwości IS-A Hashtable, która jest mapą IS-A. – BalusC