Dictionary 如何在循环映射中写入键值对而不覆盖它们?

Dictionary 如何在循环映射中写入键值对而不覆盖它们?,dictionary,arraylist,groovy,Dictionary,Arraylist,Groovy,以下是我的问题: 我在我的数据库上做了一个选择,想把我在映射中得到的每个记录的值都写下来。执行此操作时,映射中只有一条记录的值,因为每次循环再次启动时,put()函数都会覆盖这些条目。由于我必须通过JSON将Key:Value对传输到Javascript中,并为每个Key:Value对在字段中写入内容,所以ArrayList不是一个选项 我已经尝试将包含映射的ArrayList转换为映射或字符串,然后再转换为映射,但失败了 编辑: 这是我的密码 def valueArray = new Arra

以下是我的问题: 我在我的数据库上做了一个选择,想把我在映射中得到的每个记录的值都写下来。执行此操作时,映射中只有一条记录的值,因为每次循环再次启动时,put()函数都会覆盖这些条目。由于我必须通过JSON将Key:Value对传输到Javascript中,并为每个Key:Value对在字段中写入内容,所以ArrayList不是一个选项

我已经尝试将包含映射的ArrayList转换为映射或字符串,然后再转换为映射,但失败了

编辑: 这是我的密码

def valueArray = new ArrayList();
def recordValues = [:]
while (rs.next())
        {
            fremdlKorr = rs.getFloatValue(1)
            leistungKorr = rs.getFloatValue(2)
            materialKorr = rs.getFloatValue(3)
            strid = rs.getStringValue(4)

            recordValues.put("strid", strid);
            recordValues.put("material", materialKorr);
            recordValues.put("fremdl", fremdlKorr);
            recordValues.put("leistung", leistungKorr);

            valueArray.add(korrekturWerte);
        }

ArrayList只是一个测试,我不想要ArrayList,我需要一个映射。

编写的代码将为您提供一个映射列表,但是映射都包含最后一行的值。原因是while循环之外的
def recordValues=[:]
。因此,您基本上总是将相同的映射添加到列表中,并且映射值在每个循环中都会被覆盖

在移动代码时,如果可以解决问题,我将使用。这一切归结为:

def valueArray = sql.rows("select strid, material, fremdl, leistung from ...")

你想要一张地图列表。但是如果没有一个简单的例子来说明你在尝试什么,就不可能准确地帮助moreNo,我不想要一个映射列表,因为我需要为每个键:值对做一个each循环。有一张单子我做不到,所以我需要一张地图。但是,当我在映射中放置Key:Value对时,每当select找到与我的条件匹配的记录时,它们就会被覆盖。我会在几分钟后发布我的代码,这样你还可以得到地图列表。如果出于任何原因确实需要映射,可以通过记录ID对其进行键控,以避免overwriting@kjell0w,显示您希望如何访问结果以访问行/列。请提供示例输入(例如,选择的两行)以及您希望从中获得的输出。还要注意的是,如果使用Groovy的Sql,则可以直接获取映射,因此不必跳jdbc舞。