我使用此代码检查对象是否已在列表中
myClientList.contains(client);
我想在列表中存在客户端时排除某些属性,例如adress
,age
...并且只需检查firstName
,lastName
和年龄。在使用myClientList.contains
时是否有任何选项可以做到?或者我是否应该编写自己的函数来执行此操作?
答案 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方法。