Có thể thực hiện một collectEntries có điều kiện như thu thập không?Làm thế nào tôi có thể thực hiện một sưu tập có điều kiện trong groovy
10
A
Trả lời
13
[ a:1, b:2, c:3, d:4 ].findAll { it.value > 2 }
nên làm điều đó
0
này nên làm việc:
[a:1, b:2, c:3, d:4].collectEntries {
if (it.value > 2)
["${it.key}": it.value]
}
4
Nó không phải là ngắn gọn như FindAll, tuy nhiên, chỉ dành riêng cho các bản ghi, bạn có thể sử dụng collectEntries
để làm điều này:
[ a:1, b:2, c:3, d:4 ].collectEntries {
it.value > 2 ? [(it.key) : it.value] : [:] }
đánh giá thành
[c:3, d:4]
Using "${it.key}" as done in this answer dường như có vấn đề, khóa sẽ kết thúc là một phiên bản của lớp GStringImpl chứ không phải là Chuỗi.
groovy:000> m = [ a:1, b:2, c:3, d:4 ]
===> [a:1, b:2, c:3, d:4]
groovy:000> m.collectEntries { ["${it.key}" : it.value ] }
===> [a:1, b:2, c:3, d:4]
groovy:000> _.keySet().each { println(it.class) }
class org.codehaus.groovy.runtime.GStringImpl
class org.codehaus.groovy.runtime.GStringImpl
class org.codehaus.groovy.runtime.GStringImpl
class org.codehaus.groovy.runtime.GStringImpl
===> [a, b, c, d]
không phải là điều bạn muốn: bằng cách đánh giá GroovyStrings với chuỗi bình thường sẽ đánh giá sai ngay cả khi các chuỗi trông giống hệt nhau.
Các vấn đề liên quan
- 1. Làm thế nào để thực hiện định dạng có điều kiện trong một GridView
- 2. Làm thế nào tôi có thể gọi tái diễn nếu có điều kiện trong Clojure?
- 3. Làm cách nào tôi có thể thực hiện một tham chiếu bằng Groovy?
- 4. Làm thế nào tôi có thể thay thế có điều kiện trong Perl?
- 5. Làm thế nào tôi có thể thực hiện điều này một cách hiệu quả hơn
- 6. Làm cách nào để tôi có thể xóa một bộ sưu tập là một phần của thực thể jpa?
- 7. Maven - Cách thực hiện thực thi có điều kiện
- 8. Làm thế nào tôi có thể làm phân trang với bộ sưu tập @OneToMany
- 9. Groovy không trong bộ sưu tập
- 10. Làm thế nào để thực hiện đóng gói có điều kiện trong C#
- 11. Làm thế nào tôi có thể sửa đổi một bộ sưu tập hàng đợi trong một vòng lặp?
- 12. Làm cách nào để tôi có thể thực hiện các bài tập trong danh sách hiểu?
- 13. Làm thế nào tôi có thể sử dụng 'đăng nhập' bên trong một src/groovy/lớp
- 14. Làm thế nào tôi có thể thực hiện, "Tôi là ông của riêng tôi", trong Prolog?
- 15. Tôi có thể chia bộ sưu tập PL/SQL không?
- 16. Làm cách nào tôi có thể thực hiện điều gì đó như find_in_batches_by_sql trong Rails
- 17. Làm thế nào tôi có thể thực hiện một lớp singleton trong perl?
- 18. Làm thế nào để làm LINQ tập hợp khi có thể có một tập rỗng?
- 19. Trong Java, làm thế nào tôi có thể kiểm tra xem một bộ sưu tập có chứa một cá thể của một lớp cụ thể không?
- 20. Làm thế nào tôi có thể tránh thực hiện OnTextChanged trong Android của EditText
- 21. Làm thế nào tôi có thể nhận được một thực thể ủy nhiệm EventHandler từ một sự kiện trong VB.NET?
- 22. Làm thế nào để phát hiện hệ điều hành trong một tập tin thực hiện?
- 23. Làm thế nào tôi có thể thực hiện SMTP được xác thực trong C#
- 24. Làm thế nào tôi có thể phát hiện hệ điều hành trong Perl?
- 25. Làm thế nào để thực hiện Sum có điều kiện với Nhibernate?
- 26. Làm thế nào tôi có thể so sánh hai mảng có cùng một mục hoặc không có trong groovy?
- 27. Có cách nào tôi có thể thực thi một tập lệnh PHP từ MySQL không?
- 28. Làm cách nào để đảo ngược bộ sưu tập Groovy?
- 29. Làm thế nào tôi có thể chuyển một sự kiện đến một hàm trong C#?
- 30. Thực hiện INSERT có điều kiện với SQL?
Ném NPE như cũ. Bạn cần một 'else [:]' –