第一个问题是您需要实现
hashCode
和
equals
,从而将方法添加到
Model
(类为大写):
@Override
public int hashCode() {
return Objects.hash(getRollNo(), getName());
}
然后
findFirst
返回
Optional<Model>
,不是
模型
自从
containsKey
从…起
HashMap
接受
Object
作为一个参数,这将作为一个方法调用,但显然什么也找不到。
您可以通过以下方式简化此操作(并使其更具可读性):
Model m = list.stream()
.filter(p -> p.name.equals("1"))
.filter(p -> p.rollNo.equals(1))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("Key not found"));
if (hm.containsKey(m)) {
System.out.println("hit");
}
请注意,如果您的列表中不包含此人,这会引发一个异常(您也可以在这里做其他事情-由您决定)