grails - Grails:ArrayList-检索速度

标签 grails arraylist findall collect

我正在使用当前工作的方法来解决速度问题,该方法可在ArrayList中找到特定的属性集合。根据大小,可能需要超过7秒才能在列表中找到该值。

我需要加快此过程,以便处理大量数据。任何帮助将不胜感激。这是我的例子;

方法:

public ArrayList getIntegrationTag(String attribute) {
  return crmMapping?.findAll { it.get("ATTRIBUTE") == attribute }?.collect{
    it.INTEGRATION_TAG 
  }?.unique()
}//end getIntegrationTag(String attribute)

crm映射内容

"[{ATTRIBUTE=AcademicIndex, INTEGRATION_TAG=Contact~nAcademic_Index}, {ATTRIBUTE=AcademicInterest, INTEGRATION_TAG=Contact~msplAcademic_Interest},........]"

最佳答案

findAll遍历每个记录,然后collect遍历每个记录,然后Unique遍历每个记录。

尝试...

Set result = [] as Set

for(element in crmMapping) {
  if(element.get("ATTRIBUTE") == attribute) {
    result << element.INTEGRATION_TAG
  }
}

return (result as ArrayList)

仅当它添加到Set中时它将唯一时,才会循环

关于grails - Grails:ArrayList-检索速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16240725/

相关文章:

java - 将 ArrayList 从对象更改为更具体的类型

android - ArrayList<Object> 使用 getSerialized 问题到第二个 Activity

c# - 使用 Roslyn 查找对方法的所有引用

Python 正则表达式 : removing all special characters and numbers NOT attached to words

grails - 不确定用于Groovy调用的输入参数:模糊方法重载

json - Grails将LinkedHashMap转换为RoundTrip上的JSON保留顺序

grails - Grails可搜索插件安装错误

grails - 如何在Grails上从Withings api获取用户信息

android - AsynckTask.onPostExecute 和 FragmentActivity.onResumeFragments 是否在同一线程(ui 线程)上运行?

grails - 集成测试中不存在findAll(String,Map,Map)方法