如何在groovy列表中查找字符串

时间:2013-12-30 16:14:45

标签: grails groovy

来自一个时髦的新手的问题:

sql启动如下

 final Binding binding = new Binding();  
 binding.setProperty("sql", sql);
final groovy.sql.Sql sql = Sql.newInstance(dbConfig.getUrl(), dbConfig.getUserName(), dbConfig.getPasswd(),"oracle.jdbc.OracleDriver");

我在这样的groovy中运行查询

def listOfRows = sql.rows (select column1 from table1);

打印时listOfRows显示[[column1_name:value1], [column1_name:value2], [column1_name:value3]]

等内容

我想检查上面查询返回的值列表中是否存在value2(一个字符串)。

我尝试过listOfRows.contains('value2')listOfRows.find('value2'), 它抱怨列表中不存在该方法..

这样做的最佳方式是什么?

已编辑:我已更正打印值列表。返回的是List<GroovyResultSet> 我还添加了sql的定义。

4 个答案:

答案 0 :(得分:1)

我建议你看一下groovy文档,特别是集合文档(tutorialJDK / GDK)。

在这种情况下,最具体的解决方案是使用Collection#find() ...类似

listOfRows.find { it.contains(':value2') }

哪些可以翻译成人类可读的

找到此集合中的第一个元素,哪个字符串包含“:value2”。

答案 1 :(得分:1)

你可能想要

listOfRows.column1.contains( 'value2' )

答案 2 :(得分:0)

您可能正在调用this method,它将GString(请注意 GString!= String )作为参数。根据{{​​3}},单引号中的字符串是标准的java字符串,双引号中的字符串是可模板化的字符串。

'hello'    //java.lang.String
"hello"    //groovy.lang.GString

试试这个:

listOfRows.contains("value2")

答案 3 :(得分:0)

我最终做的是:

迭代listOfRows,将每个GroovyResultSet中column1的所有值都获取到listOfValues中,然后检查该列表中的值。

def listOfValues=[];
listOfRows.collect(listOfValues){it.getAt('column1')};
if(listOfValues.size()==3){
  println('success');
}