【发布时间】:2018-01-15 18:51:01
【问题描述】:
我有一个包含近 600 个条目的自定义数组列表。
我需要根据某些条件过滤某些值。我尝试了基本循环的东西,但它非常耗时,我想要的是过滤数据的最快方法。
public class MyModel {
private boolean attempeted = false;
private String answer;
public MyModel(String answer) {
this.answer = answer;
}
public void setAttempted(boolean attempeted) {
this.attempeted = attempeted;
}
public String getAnswer() {
return answer;
}
public boolean isAttempeted() {
return attempeted;
}
}
以上是我想要的模型,我只需要获取具有尝试值为真的数据。这就是我所拥有的:
ArrayList<TestAnswerModel>myMainArrayList=array which contain all my data
ArrayList<TestAnswerModel>filterArrayList=new ArrayList<>();
for(int i=0;i<myMainArrayList.size();i++)
{
if(myMainArrayList.get(i).isAttempeted()) {
filterArrayList.add(myMainArrayList.get(i))
}
}
以上工作正常,但如果我的数据太大,则需要很长时间。此外,有时数据为 600,而尝试的值仅适用于 2 或 3 个值,因此此循环将发生而没有任何结果。
我想要什么最快的方法来过滤数据。
【问题讨论】:
-
我怀疑你的其他代码有这个问题。因为它对于 600 个条目应该非常快。好的..你能通过放置时间日志来测量循环所用的时间吗? (仅通过此循环测量时间,不包括您的数据获取逻辑)
-
我上面的方法是最快的方法吗?
-
这是一个非常主观的问题,但你能回答我最初的问题吗?
标签: java performance arraylist filter