này sẽ làm những gì bạn muốn:
Map<String,Integer> map = new HashMap<String, Integer>(){{
put("cat", 2);
put("dog", 1);
put("llama", 0);
put("iguana", -1);
}};
Lệnh này tạo một lớp con nặc danh của HashMap, nơi sự khác biệt duy nhất từ lớp cha mẹ là 4 mục được thêm vào trong quá trình tạo ví dụ. Đó là một thành ngữ khá phổ biến trong thế giới Java (mặc dù một số người thấy nó gây tranh cãi vì nó tạo ra một định nghĩa lớp mới).
Bởi vì điều này gây tranh cãi, như của Java 9 có một thành ngữ mới để thuận tiện xây dựng bản đồ: gia đình của tĩnh Map.of methods.
Với Java 9 hoặc cao hơn, bạn có thể tạo ra các bản đồ mà bạn cần như sau:
Map<String, Integer> map = Map.of(
"cat", 2,
"dog", 1,
"llama", 0,
"iguana", -1
);
Với bản đồ lớn hơn, alternative syntax này có thể ít dễ bị lỗi:
Map<String, Integer> map = Map.ofEntries(
Map.entry("cat", 2),
Map.entry("dog", 1),
Map.entry("llama", 0),
Map.entry("iguana", -1)
);
(Điều này đặc biệt tốt đẹp nếu Map.entry được nhập tĩnh thay vì được tham chiếu một cách rõ ràng).
Bên cạnh chỉ làm việc với Java 9+, những cách tiếp cận mới là không hoàn toàn tương đương với trước đó một:
- Họ không cho phép bạn chỉ định những gì Bản đồ thực hiện được sử dụng
- Họ chỉ tạo bất biến bản đồ
- Họ không tạo ra một lớp con nặc danh của Map
Tuy nhiên, những khác biệt này không phải vấn đề đối với nhiều trường hợp sử dụng, làm cho này một cách tiếp cận mặc định tốt cho các phiên bản Java mới hơn.
Trên thực tế nó . Cảm ơn. – WildBamaBoy
Và đây là một lời giải thích về điều này đang làm. http://techpolesen.blogspot.com/2007/08/java-initializers-add-elements-to.html –
Hmmm ... cú đúp ngoặc kép thường không được coi là phong cách tốt –