gpt4 book ai didi

groovy - 拆分 map 的最常规方法是什么?

转载 作者:行者123 更新时间:2023-12-02 15:12:25 25 4
gpt4 key购买 nike

我需要从 CSV 文件读取到 Map 并将该 Map 传递给后端方法,问题是如果 Map 太大,后端方法可能会阻塞。所以我需要在传递之前将 Map 分解成更小的 block (分区)。这是我到目前为止尝试过的..

Map ginormousMap = extractMapFromFile()
Map batchedMap = [:]
int index = 0
for ( pair in ginormousMap ) {
def source = pair.key
def destination = pair.value

batchedMap.put(source,destination)
if(index > 0 && index % 100 == 0 ){
sendToFragileBackEnd(batchedMap)
batchedMap = [:]
}
index++

}

我认为在每第 100 个元素处,这会将较小的 map 发送到后端并重新初始化它。

这行得通吗?有没有更好的办法?

最佳答案

一个简单的方法是使用 collat​​e() 方法。

collat​​e() 方法可以将列表划分为指定大小的子列表。

如果集合是一个 Map(如您所处的情况),您可以将 Map.keySet() 转换为 List,然后执行 collat​​e() 方法。

Map fullMap = [a:1,b:2,c:3,d:4,e:5,f:6,g:7]

(fullMap.keySet() as List).collate(3).each{
def map = fullMap.subMap(it)
println map
}

或在您的代码中...

Map ginormousMap = extractMapFromFile()

(ginormousMap.keySet() as List).collate(100).each{
sendToFragileBackEnd(ginormousMap.subMap(it))
}

关于groovy - 拆分 map 的最常规方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42938414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com