2011-10-15 30 views
7

Có cách nào để viết một Hashtable thức tĩnh trong java theo cặp giá trị key giống như bạn có thể khởi tạo một mảng chuỗi thuận tiện như:viết một Hashtable tĩnh khởi tao nhã

String [] foo = {"A","AB"}; 

Về cơ bản những gì tôi có nghĩa là không được có để viết các từ "đặt" cho các cặp khóa: giá trị nhưng thay vào đó có thể giống như sau:

Hashtable<String, String> foo = {"JJ":"222","KK":"222"} 

IMO trông thanh lịch hơn.

(Tôi biết việc khởi tạo sẽ cần phải có trong một khối tĩnh. Tôi rời khỏi đó ra cho bây giờ)

Trả lời

7

Không, Java không có literals bản đồ, nhưng nó có literals mảng.

static final Map<String, String> map; 

static { 
    map = new HashMap<String, String>(); 
    String[][] pairs = { 
     {"foo", "bar"}, 
     {"x", "y"} 
    }; 
    for (String[] pair : pairs) { 
     map.put(pair[0], pair[1]); 
    } 
} 

Tất nhiên điều này không thực sự thêm bất cứ điều gì đến bản sao đơn giản và dán put giải pháp, và nó không hoạt động tốt nếu khoá và giá trị của bạn là loại không giống nhau.

-1

Không, bạn đang tìm kiếm một cái gì đó như C# 's collection initializers, mà hiện không tồn tại trong Java .

Bạn có thể sử dụng một lớp ẩn danh để tiết kiệm một chút việc nhập, nhưng bạn vẫn phải viết put.

7

Bạn có thể sử dụng ổi của ImmutableMap:

map = ImmutableMap.of(key1, value1, key2, value2); 
+0

1 Tốt source: D –

8

Một lớp bên trong vô danh sẽ cung cấp cho bạn đôi khởi nẹp, đó là hữu ích trong một số trường hợp:

static final Map<String, String> map = new HashMap<String, String>() {{ 
    put("foo", "bar"); 
    put("x", "y"); 
}}; 

Trong mọi trường hợp, câu trả lời @ michael667 của có lẽ là tốt nhất

+0

Giải pháp ưu tiên: Di chuyển mã ban đầu ngay bên dưới biến tĩnh. Bất kể bạn làm gì với định dạng tự động mã nguồn (Sắp xếp thành viên). Chỉ sử dụng libs chuẩn thuần túy. –

Các vấn đề liên quan