Chỉ muốn biết. Sự khác nhau giữa java.util.Properties
Vs java.util.HashMap<String, String>
là gì? Đó là thích hợp hơn?java.util.Properties Vs java.util.Map <String, String>
Trả lời
Họ là tương tự, nhưng từ góc độ thiết kế, lớp Properties
được coi là một trong những "sai lầm" của java, bởi vì nó là một Hashtable
(chứ không phải sử dụng một Hashtable). Nó phải là một giao diện.
Luôn sử dụng trừu tượng nếu có thể, vì vậy đây được ưa thích:
Map<String, String> stuff = new HashMap<String, String>();
có xu hướng tránh sử dụng Properties
trừ khi bạn có tới.
Propeties mở rộng Hashtable, được đồng bộ hóa theo mặc định. HashMap không được đồng bộ hóa theo mặc định. Bạn đang giao dịch an toàn chủ đề được tích hợp sẵn để cải thiện hiệu suất nhỏ, một trong những khả năng bạn không thể đo lường.
Thuộc tính là lớp cũ hơn từ Java 1.0. HashMap là một phần của API bộ sưu tập mới hơn của Joshua Bloch.
java.util.Properties
là một Hashtable<Object,Object>
do đó bạn có thể xem nó như là một hình thức đồng bộ java.util.HashMap<String, String>
Thuộc tính là tốt đẹp để xử lý ... thuộc tính:) Nếu bạn sử dụng nó cho các mục đích khác, sau đó lựa chọn của bạn sẽ phụ thuộc vào đồng thời quản lý trong chương trình của bạn
Bạn có ConcurrentHashMap<String, String>
hiện đại để đảm bảo an toàn cho luồng. Không thực sự sử dụng Properties
trừ khi bạn đang sử dụng nó để đọc tệp .properties
.
Properties lớp là một phần mở rộng của Hashtable, về cơ bản thêm chức năng viết + đọc từ một đĩa trong một định dạng tập hợp (cặp giá trị văn bản như thế này):
key1=value1
key2=value2
Nếu bạn muốn lưu nó vào đĩa và sử dụng định dạng đó, sau đó sử dụng Thuộc tính, nếu không hãy sử dụng HashMap hoặc Hashtable.
Có hai mục đích khác nhau của hai lớp tiện ích này. Bản đồ, hoặc trong trường hợp của bạn, HashMap là đối tượng lưu trữ mục đích chung, nơi bạn có khóa duy nhất và các giá trị mà chúng trỏ tới. HashMap có thể có bất kỳ loại đối tượng nào làm khóa và bất kỳ loại đối tượng nào làm giá trị của chúng.
java.util.Properties là, tuy nhiên, một bản đồ mục đích đặc biệt. Nó được phát triển để đọc/ghi từ/đến các tập tin thuộc tính. Nó có các phương pháp đặc biệt để làm như vậy [xem load(..)
]. Bản đồ không.
Vì vậy, bạn có các tình huống khác nhau để sử dụng chúng. Các địa điểm mà bạn cần các thuộc tính để đọc, bạn nên đi với Thuộc tính. Và những nơi bạn muốn có các giá trị tra cứu được lưu trữ ngoài logic, bạn hãy truy cập HashMap<String, String>
.
Không có quy tắc cứng và nhanh, bạn có thể sử dụng HashMap<String, String>
và Properties
thay thế cho nhau. Nhưng với tư cách là kỹ sư, hãy sử dụng công cụ phù hợp cho nhiệm vụ.
- 1. So sánh một java.util.Map <String, String>
- 2. Tại sao java.util.Properties thực hiện Bản đồ <Object, Object> và không phải Bản đồ <String, String>
- 3. StringDictionary vs Dictionary <string, string>
- 4. ArrayList <HashMap <String, String >> để String []
- 5. Performance quan tâm: StringCollection vs Danh sách <String>
- 6. C Mảng # - string [] [] vs string [,]
- 7. IDictionary <string, string> so với Dictionary <string, string>
- 8. String.Format vs "string" + "string" hoặc StringBuilder?
- 9. IDictionary <string, string> hoặc NameValueCollection
- 10. IDictionary <string, string> hoặc NameValueCollection
- 11. Deserialize KeyValuePair <string, string> Json.Net
- 12. std :: string vs. char *
- 13. Marshal.PtrToStringUni() vs new String()?
- 14. Tạo danh sách riêng <string, string, string>
- 15. Tại sao tôi không thể tạo từ điển <string, dictionary <string, string >>?
- 16. LINQ - rẽ Danh sách <string> vào Dictionary <string, string>
- 17. C# Chuyển đổi Danh sách <string> thành Từ điển <string, string>
- 18. IEnumerable <string> chuỗi
- 19. std :: string :: length() vs std :: string :: kích thước()
- 20. Kiểm tra nội dung chuỗi? string Length Vs Empty String
- 21. So sánh 2 Từ điển <string, string> Instances
- 22. Bản đồ JPA <String, String> mapping
- 23. Làm thế nào để chuyển đổi từ điển <string, object> để Dictionary <string, string> trong C#
- 24. Làm thế nào để tìm kiếm một String trong List <tuple <string, string >> trong C#
- 25. đọc SQL Bảng thành Dictionary <string, Danh sách <string[]>>
- 26. Lấy khóa từ giá trị - Từ điển <string, Danh sách <string>>
- 27. Danh sách <String> cho ArrayList <String> vấn đề chuyển đổi
- 28. chuyển đổi EnumerableRowCollection <string> vào danh sách <string>
- 29. Làm thế nào để lặp lại Arraylist <HashMap <String, String >>?
- 30. chuyển đổi List <Danh sách <string[]>> vào string [] [] [] trong C#
Dup http://stackoverflow.com/questions/40471/differences-between-hashmap-and-hashtable – Jivings