我正在学习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
您能提供一个可行的例子吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句