Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList根据pojo对象查找字段_Java_Android_Sorting - Fatal编程技术网

Java ArrayList根据pojo对象查找字段

Java ArrayList根据pojo对象查找字段,java,android,sorting,Java,Android,Sorting,嗨,我有一个ArrayList的模型,因为我必须根据优先级找到值。 假设我有一个模型 public class model{ String name,status; } 这个列表很有价值 说位置1-状态“D” 说出位置2-状态“f” 说位置3-状态“a” 一些 现在我希望它应该首先搜索值D,然后搜索A,然后搜索F。。我正在做这件事 for (int i = 0; i < model.size(); i++) { //for D return i; } for (int

嗨,我有一个
ArrayList
的模型,因为我必须根据优先级找到值。 假设我有一个模型

public class model{
 String name,status;  }
这个列表很有价值 说位置1-状态“D” 说出位置2-状态“f” 说位置3-状态“a” 一些

现在我希望它应该首先搜索值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;
  }
for(int i=0;i
任何查找

的好方法都可以使用ArrayList本身提供的方法:

public int indexOf(对象o)

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

但是,要使其发挥作用,您需要对
D
类进行一个小的安排,其中如果该类的两个实例具有相同的
状态
值,则它们是相等的。因此,您需要重写
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);
List myList=。。。;
//搜索状态为“D”的项目
D searchKey=newd();
d、 设定状态(“d”);
//这将遍历整个数组列表,并获取满足D的equals方法的第一个元素的位置。
int index=myList.indexOf(searchKey);

您是否尝试在列表中“搜索”具有特定位置值的实例,或根据位置值(按D,F,A的顺序)对列表进行“排序”,或按D,F,A的顺序进行搜索?
如果(D.get(i).status.equals(“D”))返回i?@sakaya每个循环都有if(d.get(i).status.equals(“d”))什么?没有you@bob:查看我的更新,希望它能有所帮助。如果不理解,请指定您不理解的内容。@npinti如何按名称查找?@saka1029:在本例中,您不能。您可以使用
for
循环遍历所有项目并具体检查属性,或者,在这种情况下,您可以使
equals
方法更智能,如果您传递一个空状态(对于
obj
),它将通过
name
@npinti进行搜索,它总是给出0