对空值使用 join 方法的集合

Collection using join method on empty values

我有一个简单的方法可以查看来自表单的请求参数并在字符串中显示值。这种方法工作得很好,但是当一个空值从表单中传出时,它会显示如下内容:

beef:mozzarella::milk

你可以看到有一个额外的“:”,如果值为空,我该如何删除它?出于某种原因,检查 v.size > 0 是否不起作用。有什么想法吗?

final String[] products = ["meat", "cheese", "nuts", "dairy"]

String generateProducts() {
        return request.requestParameterMap.findAll { k, v -> products.contains(k) }
         .collect { k, v -> v.size() > 0 ? v[0] : ""
        }.join(":")
    }

你可以利用 subMap:

request.requestParameterMap
       .subMap(products)
       .findResults { k, v -> v ?: null }
       .join(':')

另一种处理方法是:

products.collect { request.requestParameterMap[it] }.findAll().join(':')

感谢 Tim Yates 轻拍我的手腕,让我意识到在想到肉类、奶酪和奶制品时,我对牛肉、马苏里拉奶酪和牛奶变得过于笼统。 ;-)(请参阅对 Tim 的回答的评论以注意我的公然无知)