如何检查Object ArrayList包含没有Loop的Object的单个属性

Yas*_*ary 3 java arrays search list arraylist

这是这个问题的答案,但我还需要其他方法

假设Person是一个包含属性的类

  • PERSONID
  • PERSONNAME
  • personAddress

一个ArrayList持有千人对象,我想检查"11"personId是否在ArayList中?

一种方法是迭代(循环)arraylist并逐个单独检查.

有没有其他方法可以解决这个问题?

Sir*_*uti 5

覆盖POJO中的人员ID的equals()和hashcode()方法

例如:

import java.util.ArrayList;

public class Test {
private int personId;
private String name;
//getters and Setters



@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + personId;
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
       return true;
    if (obj == null)
       return false;
    if (getClass() != obj.getClass())
       return false;
    Test other = (Test) obj;
    if (personId != other.personId)
       return false;
    return true;
}
public static void main(String[] args) {
    ArrayList<Test> test=new ArrayList<Test>();

Test t=new Test();
t.setName("Sireesh");
t.setPersonId(1);

Test t1=new Test();
t1.setName("Ramesh");
t1.setPersonId(2);

Test t2=new Test();
t2.setName("Rajesh");
t2.setPersonId(3);


test.add(t);
test.add(t1);
test.add(t2);

Test tx=new Test();
tx.setPersonId(1);
System.out.println(test.contains(tx));
//Returns true

}
}
Run Code Online (Sandbox Code Playgroud)