Bất kỳ ai có thể chỉ cho tôi ví dụ về cách sử dụng Map
trong Groovy có khóa là String
làm khóa của nó và List
làm giá trị?Bản đồ với Khóa dưới dạng Chuỗi và Giá trị dưới dạng Danh sách trong Groovy
20
A
Trả lời
27
Groovy chấp nhận hầu hết các cú pháp Java, vì vậy có một quang phổ của sự lựa chọn, như minh họa dưới đây:
// Java syntax
Map<String,List> map1 = new HashMap<String,List>();
List list1 = new ArrayList();
list1.add("hello");
map1.put("abc", list1);
assert map1.get("abc") == list1;
// slightly less Java-esque
def map2 = new HashMap<String,List>()
def list2 = new ArrayList()
list2.add("hello")
map2.put("abc", list1)
assert map2.get("abc") == list2
// typical Groovy
def map3 = [:]
def list3 = []
list3 << "hello"
map3.'abc'= list1
assert map3.'abc' == list3
13
def map = [:]
map["stringKey"] = [1, 2, 3, 4]
map["anotherKey"] = [55, 66, 77]
assert map["anotherKey"] == [55, 66, 77]
5
Một thêm mảnh nhỏ đó là hữu ích khi giao dịch với bản đồ/danh sách như giá trị trong một bản đồ là phương pháp withDefault(Closure)
trên bản đồ trong groovy. Thay vì làm đoạn mã sau:
Map m = [:]
for(object in listOfObjects)
{
if(m.containsKey(object.myKey))
{
m.get(object.myKey).add(object.myValue)
}
else
{
m.put(object.myKey, [object.myValue]
}
}
Bạn có thể làm như sau:
Map m = [:].withDefault{key -> return []}
for(object in listOfObjects)
{
List valueList = m.get(object.myKey)
m.put(object.myKey, valueList)
}
Với mặc định có thể được sử dụng cho những thứ khác nữa, nhưng tôi tìm thấy điều này trong trường hợp sử dụng phổ biến nhất đối với tôi.
API: http://www.groovy-lang.org/gdk.html
Bản đồ -> withDefault (Đóng cửa)
1
bạn không cần phải khai báo Map groovy nội nhận nó
def personDetails = [firstName:'John', lastName:'Doe', fullName:'John Doe']
// print the values..
println "First Name: ${personDetails.firstName}"
println "Last Name: ${personDetails.lastName}"
Các vấn đề liên quan
- 1. Giá trị enum dưới dạng danh sách thả xuống
- 2. Cách lặp qua LinkedHashMap với các danh sách dưới dạng các giá trị
- 3. Giá trị ô tham chiếu dưới dạng chuỗi trong Excel
- 4. Integer to bitfield dưới dạng danh sách
- 5. Chuyển danh sách dưới dạng varargs
- 6. Giá trị mảng Django dưới dạng
- 7. CGPath dưới dạng chuỗi
- 8. Đọc số dưới dạng chuỗi
- 9. Nhận các giá trị chỉ mục hàng của Pandas DataFrame dưới dạng danh sách?
- 10. Danh sách thả xuống YII Giá trị trống dưới dạng mặc định
- 11. UILabel - chuỗi dưới dạng văn bản và liên kết
- 12. Trích xuất các cặp tham số/giá trị từ một Uri dưới dạng Bản đồ
- 13. chuỗi dưới dạng tham số?
- 14. Nhận tên trường của bản ghi Haskell dưới dạng danh sách các chuỗi?
- 15. Thực thi mã được lưu trữ dưới dạng danh sách
- 16. định dạng số dài dưới dạng chuỗi trong python
- 17. không thể truyền giá trị dưới dạng float
- 18. Chuỗi liên tục dưới dạng Chuỗi được bản địa hóa
- 19. Pandas đọc csv dưới dạng chuỗi
- 20. Tại sao tôi không thể sử dụng danh sách dưới dạng khóa dict trong python?
- 21. wcf deserialize enum dưới dạng chuỗi
- 22. Đại diện cho danh sách Enums bitwise dưới dạng Int
- 23. Cách trả về giá trị từ Python dưới dạng JSON?
- 24. Có thể chuyển tên thuộc tính dưới dạng chuỗi và gán giá trị cho nó không?
- 25. Tạo danh sách dưới dạng Danh sách QVariant hoặc Danh sách QVariant
- 26. Chuỗi dưới dạng các mảng của mảng trong javascript
- 27. Khởi tạo bản đồ cá nhân tĩnh dưới dạng trống
- 28. Chuỗi Python getattr dưới dạng chuỗi
- 29. ASP.NET MVC 2 và liệt kê dưới dạng giá trị Ẩn?
- 30. R đánh giá chuỗi dưới dạng khung dữ liệu
Ngoài ra: ' map.stringKey = [1, 2, 3, 4]; map.anotherKey = [55, 66, 77] ' – Will