我正在学习 Groovy,我正在尝试编写以下 Java 代码的替代方案。
Collection<Record> records = requestHelper.getUnmatchedRecords();
Collection<Integer> recordIdentifiers = new ArrayList<>();
for (Record record : records){
int rowId = record.getValue("RowID");
if (rowId >= min && rowId <= max) {
recordIdentifiers.add(rowId);
}
}
当那段代码运行时,recordIdentifiers 应该包含 50 个项目。到目前为止,这是我的 Groovy 等价物。
def records = requestHelper.getUnmatchedRecords()
def recordIdentifiers = records.findAll{record ->
int rowId = record.getValue("RowId")
rowId >= min && rowId <= max
}
由于某种原因,在执行 Groovy 代码后,数组包含 100 个项目。当数组在 Groovy 中本地构造时,我遇到的所有 findAll() 示例都进行了简单的比较,但是如何过滤从 Java 类接收到的 Collection 呢?
最佳答案
看起来很奇怪。以下代码工作正常:
def records = [[r:3],[r:5],[r:6],[r:11],[r:10]]
def range = (1..10)
recordIdentifiers = records.findAll { range.contains(it.r) }
assert recordIdentifiers.size() == 4
你能提供一个工作示例吗?
关于java - 使用 findAll 方法的 Groovy 过滤数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27058254/