ArrayList根据pojo对象查找字段

时间:2015-12-24 09:56:57

标签: java android sorting

嗨我有ArrayList<D>的模型,因为我必须找到pirority的价值。  说我有拿着的模型

public class model{
 String name,status;  }

此列表具有价值 说位置1 - 状态&#34; D&#34; 说位置2 - 状态&#34; f&#34; 说位置3 - 状态&#34; a&#34;

现在我想它应该第一次搜索值D然后A然后F ..我正在做

  for (int i = 0; i < model.size(); i++) {
 //for D
return i;
  }

  for (int i = 0; i < model.size(); i++) {
//for A
 return i;
  }

for (int i = 0; i < model.size(); i++) {
//for F
 return i;
  }

找到

的任何好方法

1 个答案:

答案 0 :(得分:1)

您可以使用ArrayList本身提供的indexOf方法:

  

public int indexOf(Object o)

     

返回指定元素第一次出现的索引   此列表,如果此列表不包含该元素,则返回-1。更多   正式地,返回最低的索引i,使得(o == null?get(i)== null   :o.equals(get(i))),如果没有这样的索引,则为-1。

但是,要使其工作,您需要对D类进行一个小的安排,其中如果这个类的两个实例具有相同的status值,则它们是相等的。因此,您需要覆盖 equals方法。

public class D {
 String name;
 String status;  

 ...
 @Override
 public boolean equals(Object obj) {
      if(obj instanceof D)
          return ((D)obj).getStatus().equals(this.getStatus());
      return false;
 }
}

用法:

List<D> myList = ...;
//Search for an item which has a status of 'D'
D searchKey = new D();
d.setStatus("D");

//This will go through the entire array list and gets the location of the first element which satisfies D's equals method.
int index = myList.indexOf(searchKey);