【问题标题】:How to filter the results of a hashMap to pick up all Keys starting with a certain letter Groovy如何过滤 hashMap 的结果以获取以某个字母开头的所有键 Groovy
【发布时间】:2015-03-27 09:00:59
【问题描述】:

我创建了一个 LinkedHashMap,它在 groovy 中生成一个状态列表。 这些是mysql查询的结果。我想过滤我的地图结果以使用地图中以字母“O”开头的关键条目(状态名称)。但是,我正在努力寻找如何使用地图来做到这一点。

我的代码如下:

db.eachRow(reportQuery, [date]) {
      cache.put(it.statusName, it.statusTickets)
    }
    cache.each{statusName, statusTickets ->
      reportMetricsWithValues[statusName] = statusTickets
      table.addData([metric:statusName, value: statusTickets])
    }

这是我需要添加此过滤器的代码部分。该代码正在将键值指标添加到数据库表中。

【问题讨论】:

    标签: mysql groovy linkedhashmap


    【解决方案1】:

    要过滤,您可以使用findAll。将 map 元素逐个元素传递并检查元素的键是否以字母 O 开头;大致如下:

    groovy:000> [zomg: 1, omg: 2].findAll{ it.key.startsWith('o' ) }
    ===> [omg:2]
    

    如果您还需要“其他”,那么groupBy(与上面的语法相同)可能会很有用。

    【讨论】:

    • 谢谢,我试过了,把它调整到我上面的样子。但它似乎忽略了它。 db.eachRow(reportQuery2, [nocDate]) { cache.findAll{it.key.startsWith('O')} cache.put(it.statusName, it.statusTickets) }
    • 如果您有更多信息,请编辑问题。它在评论中完全不可读,老实说我不明白,你的终极目标是什么。看起来你也可以select statusName, statusTicket where statusName like 'O%' order by date'
    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    相关资源
    最近更新 更多