搜索列表

时间:2016-10-21 18:34:47

标签: java arraylist

我使用此代码检查对象是否已在列表中

myClientList.contains(client);

我想在列表中存在客户端时排除某些属性,例如adressage ...并且只需检查firstNamelastName和年龄。在使用myClientList.contains时是否有任何选项可以做到?或者我是否应该编写自己的函数来执行此操作?

4 个答案:

答案 0 :(得分:1)

什么 @El Sam 回答没问题,但这对真正的单词不好,因为可能有两个人具有相同的FirstName,LastName和Age,所以使用equals / hashcode不是一个好的选择。

对于你的情况。编写自己的函数会更好。只需写一个循环并检查条件。

如果您使用的是Java 8,则可以使用Lambda表达式。

    myClientList.stream().anyMatch( r -> 

        r.getFirstName().equals(client.getFirstName()) &&
        r.getLastName().equals(client.getLastName()) &&
        r.getAge() == client.getAge()
    );

答案 1 :(得分:0)

PS1方法基于contains类的equals方法,因此您应该使用Client方法来满足您的需求,并做同事:< / p>

equals

否则,您可以在迭代时手动检查这些属性。

答案 2 :(得分:0)

Of contains return True您可以迭代集合并查找此对象并排除属性

答案 3 :(得分:0)

java.util.List.contains(Object o)依赖于Object.equals(Object o)方法中对象的相等性。 它有很强的语义。

知道一个对象是否有一些与另一个对象相同的属性,例如名字和姓氏不应该与equals方法有关系,因为它与识别客户端无关(这与@Loc不够)已提到)。它是一种带有一些标准的搜索方法。

所以,在你的地方,我会创建一个服务来在客户端上进行搜索操作,或者我会创建自己的List来实现List,但它也提供了一个符合我需要的find方法。