0

我有一个列表,我想按 2 分组并放入一个 HashMap,其中第一个元素是键,第二个元素是值。现在我正在 for 循环中这样做:

    Elements dList = showDoc.select("div#details dl > *")
    for(int i = 0; i < dList.size(); i += 2) {
        Element dt = dList.get(i)
        Element dd = dList.get(i+1)

        elsMap.put(dt.text(),dd)
    }

我之前遇到过一个问题,我有一堆元素具有相同的类,我希望能够根据部分元素的文本访问这些元素,我让一位同事向我展示了如何使用闭包来做到这一点:

def elsMap = showDoc.select("div.info_item").collectEntries{ el -> [el.select('b').text(), el.select(".desc_item")] };

我想知道是否有类似的方法可以解决这个问题。我不知道如何让关闭以 2 秒为单位进行分组。

4

1 回答 1

3

这应该工作(使用collate):

elsMap = dList.collate( 2, false )
              .collectEntries { a, b -> [ a.text(), b ] }

Collat​​e 获取一个列表并将其分组为大小为 N 的较小列表。

作为第二个参数传递false会删除任何不会组成一组大小为 N 的尾随条目

于 2013-10-24T14:00:43.093 回答