我有ArrayList
个名为Customer
的数据类:
public class Customer {
private String userid;
private String fullName;
private String phoneNumber;
private String email;
private String addressOne;
private String addressTwo;
private String city;
private String state;
private String zip;
private String country;
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddressOne() {
return addressOne;
}
public void setAddressOne(String addressOne) {
this.addressOne = addressOne;
}
public String getAddressTwo() {
return addressTwo;
}
public void setAddressTwo(String addressTwo) {
this.addressTwo = addressTwo;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
我创建了客户数组列表
ArrayList<Customer> customersList = new ArrayList<Customer>();
我在循环中加载了许多客户的ArrayList
。
如何检查名为"David Paul"
的客户是否已在ArrayList
?
答案 0 :(得分:3)
你可以这样做:
boolean contains = customersList.stream()
.anyMatch(c -> c.getFullName().equals("David Paul"));
答案 1 :(得分:3)
使用ArrayList
,您必须简单地逐个元素遍历整个列表,并检查给定的客户是否在那里。这将很慢(O(n^2)
慢)。
如果您可以将列表更改为Set
是首选方式,那么您只需覆盖hashCode
和equals
方法即可使用fullName
并进行检查在set.contains()
的恒定时间内。或者,您可以设置Map
<String, Customer>
,其中密钥为fullName
,您可以再次检查是否存在给定密钥。
如果您需要保持插入顺序,可以使用LinkedHashMap
或LinkedHashSet
之类的内容。