113

Làm thế nào để tôi tìm ra nếu một mảng có chứa một phần tử? Tôi nghĩ rằng có thể có một cái gì [1, 2, 3].includes(1)đó sẽ đánh giá như true.

|
117

.contains () là phương thức tốt nhất cho danh sách, nhưng đối với bản đồ, bạn sẽ cần sử dụng .containsKey () hoặc .containsValue ()

[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
|
  • 1

    Và, ngoài ra, để kiểm tra xem bản đồ có chứa một số giá trị không null dưới một khóa nhất định hay không, việc kiểm tra biểu thức sau là đủ if(aMap["aKey"]==aValue).

    – Tạ Ðoan Trang 12:58:33 18/12/2017
222

Một số cú pháp đường

1 in [1,2,3]
|
44

Đối với danh sách, sử dụng contains:

[1,2,3].contains(1) == true
|
7

Nếu bạn thực sự muốn phương thức bao gồm của bạn trên một ArrayList, chỉ cần thêm nó:

ArrayList.metaClass.includes = { i -> i in delegate }
|
3

Gotcha quan trọng để sử dụng .contains () trên Bộ sưu tập các đối tượng, chẳng hạn như tên miền. Nếu khai báo Miền chứa một EqualsAndHashCode hoặc một số triển khai Equals () khác để xác định xem các Ojbects đó có bằng nhau không, và bạn đã đặt nó như thế này ...

import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")

sau đó .contains (myObjectToCompareTo) sẽ đánh giá dữ liệu trong myObjectToCompareTo với dữ liệu cho từng đối tượng Object trong Bộ sưu tập. Vì vậy, nếu phương thức bằng của bạn không phải là để hít, như của tôi thì không, bạn có thể thấy kết quả không mong muốn.

|
1
def fruitBag = ["orange","banana","coconut"]
def fruit = fruitBag.collect{item -> item.contains('n')}

Tôi đã làm nó như thế này để nó hoạt động nếu ai đó đang tìm kiếm nó.

|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.