gpt4 book ai didi

java - 将 Java 代码转换为 Groovy

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:50 28 4
gpt4 key购买 nike

我正在尝试将 Java 函数转换为等效的 Groovy 代码,但我无法找到任何在循环中执行 && 操作的内容。谁能指导我......

到目前为止,这就是我得到的

public List getAlert(def searchParameters, def numOfResult) throws UnsupportedEncodingException
{
List respList=null
respList = new ArrayList()
String[] searchStrings = searchParameters.split(",")
try
{
for(strIndex in searchStrings)
{
IQueryResult result = search(searchStrings[strIndex])
if(result!=null)
{
def count = 0

/*The below line gives me error*/
for(it in result.document && count < numOfResult)
{

}
}
}
}
catch(Exception e)
{
e.printStackTrace()
}
}

我的Java代码

public List getAlert(String searchParameters, int numOfResult) throws UnsupportedEncodingException
{
List respList = null
respList = new ArrayList()
String[] searchStrings = searchParameters.split(",")
try {
for (int strIndex = 0; strIndex < searchStrings.length; strIndex++) {
IQueryResult result = search(searchStrings[strIndex])
if (result != null) {
ListIterator it = result.documents()
int count = 0
while ((it.hasNext()) && (count < numOfResult)) {
IDocumentSummary summary = (IDocumentSummary)it.next()

if (summary != null) {

String docid = summary.getSummaryField("infadocid").getStringValue()
int index = docid.indexOf("#")
docid = docid.substring(index + 1)


String url = summary.getSummaryField("url").getStringValue()
int i = url.indexOf("/", 8)
String endURL = url.substring(i + 1, url.length())
String body = summary.getSummaryField("infadocumenttitle").getStringValue()

String frontURL = produrl + endURL
String strURL
strURL = frontURL
strURL = body
String strDocId
strDocId = frontURL
strDocId = docid

count++
}
}
}
result = null
}
} catch (Exception e) {
e.printStackTrace()
return respList
}
return respList
}

最佳答案

在我看来就像

def summary = result.documents.first()
if (summary) {
String docid = summary.getSummaryField("infadocid").getStringValue()
...
strDocId = docid
}

这就是您真正需要的,因为当您只想处理第一条记录时,for 循环实际上没有多大意义。

如果 result.documents 可能包含 null,则将 first() 替换为 find()

编辑:要处理多个结果:

def summaries = result.documents.take(numOfResult)

// above code assumes result.documents contains no nulls; otherwise:
// def count=0
// def summaries = result.documents.findAll { it && count++<numOfResult }

summaries.each { summary ->
String docid = summary.getSummaryField("infadocid").getStringValue()
...
strDocId = docid
}

在惯用的 Groovy 代码中,许多循环被替换为迭代方法,例如 each()

关于java - 将 Java 代码转换为 Groovy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9001066/

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