我有一个列表,我希望按2分组并放入HashMap,其中第一个元素是Key,第二个元素是Value。现在我在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)
}
之前我遇到过一个问题,我有一堆具有相同类的元素,我希望能够根据元素的一部分文本进行访问,我让一位同事告诉我如何使用Closure :
def elsMap = showDoc.select("div.info_item").collectEntries{ el -> [el.select('b').text(), el.select(".desc_item")] };
我想知道是否有类似的方法来解决这个问题。我无法弄清楚我是如何通过2s将关闭分组的。
答案 0 :(得分:3)
这应该有效(using collate
):
elsMap = dList.collate( 2, false )
.collectEntries { a, b -> [ a.text(), b ] }
Collate获取一个列表并将其分组为较小的N列表。
传递false
作为第二个参数会删除任何不会产生大小为N的组的尾随条目