搜索包含类的arraylist以获取特定项目名称

时间:2013-10-28 05:51:16

标签: java class search arraylist

我有一个班级:

public class Test_Demo{
    public String name;
}

现在我有一个arrayList:

public ArrayList<Test_Demo> tdArrayList= new ArrayList<Test_Demo>();

现在我创建一个上面类的对象,并将其添加到Arraylist:

Test_Demo td = new Test_Demo();
td.name="Hello";
tdArrayList.add(td);

现在我将名称比作:

String testname="Hello";
for(int i=0;i<tdArrayList.size();i++){
    if(tdArrayList.get(i).name.equals(testname)){
        //name present, print here and break from loop
    }
}

这样可以正常工作,但如果 ArrayList有很多项,则此方法很慢。你能建议我采取更好的方法吗? tdArrayList.contains(testname)不会工作,因为arrayList没有名称但是它的类又具有名称。

6 个答案:

答案 0 :(得分:4)

  

搜索包含类的arraylist以获取特定项目名称

没有办法从外面看如果 任何类,是否具有该名称。

你必须迭代并看到。

答案 1 :(得分:1)

一般而言,这是最好的方法。但是如果你想提高效率,那么你可以创建ArrayList集群,比如ArrayList存储名称以'A','B'等开头。然后,如果测试名称为“Hello”,则获取其第一个字母“H”并在群集“H”中搜索。您可以根据需要增加群集数量。这可能是一个解决方案。

答案 2 :(得分:1)

我不确定上下文。但是尝试通过映射名称和对象来使用hashmap进行回答。

答案 3 :(得分:0)

首先覆盖equals类中的Test_Demo方法,然后使用ArrayList contains方法。

答案 4 :(得分:0)

覆盖equals方法如下:

public class Test_Demo{
   public String name;
   public boolean equals(Object anObject) {
      if (this == anObject) {
         return true;
       }
     if (anObject instanceof Test_Demo) {
        Test_Demo test = (Test_Demo )anObject;
        if(test.name.equals(this.name)
           return true;
      }   
      return false;
   }
}

然后调用contains方法。

答案 5 :(得分:0)

tdArrayList中有多少项?你需要多长时间来迭代整个列表? 也许您可以对列表进行排序,然后进行二分查找。