检查ArrayList中数据类中的字符串字段是否具有给定值

时间:2015-07-30 02:41:00

标签: java arraylist

我有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

2 个答案:

答案 0 :(得分:3)

你可以这样做:

boolean contains = customersList.stream()
                     .anyMatch(c -> c.getFullName().equals("David Paul"));

答案 1 :(得分:3)

使用ArrayList,您必须简单地逐个元素遍历整个列表,并检查给定的客户是否在那里。这将很慢(O(n^2)慢)。

如果您可以将列表更改为Set是首选方式,那么您只需覆盖hashCodeequals方法即可使用fullName并进行检查在set.contains()的恒定时间内。或者,您可以设置Map <String, Customer>,其中密钥为fullName,您可以再次检查是否存在给定密钥。

如果您需要保持插入顺序,可以使用LinkedHashMapLinkedHashSet之类的内容。