java流anyMatch失败,出现“不兼容类型”错误
我想打印我给定号码集中的联系人,我正在尝试使用streams。通过谷歌搜索,我看到人们用我现在尝试的方式解决了这个问题。但是我得到了这个错误,我不明白我需要做什么。错误在方法contactsByNumber
中
代码:
电话号码。java
class PhoneNumber {
private String name;
private String number;
public PhoneNumber(String name, String number) {
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public String getNumber() {
return number;
}
}
电话簿
class PhoneBook {
private Set<PhoneNumber> phoneNumbers;
public PhoneBook() {
this.phoneNumbers = new HashSet<>();
}
public void addContact(String name, String number) throws DuplicateNumberException {
PhoneNumber pn = new PhoneNumber(name, number);
if(phoneNumbers.contains(pn)) {
throw new DuplicateNumberException(number);
} else {
phoneNumbers.add(new PhoneNumber(name, number));
}
}
public void contactsByNumber(String number) {
phoneNumbers.stream().parallel().anyMatch(number::contains);
}
}
# 1 楼答案
在本节中:
它是一个
Stream<PhoneNumber>
,您试图将其视为一个String
。您需要将它映射到它的name
属性:但是,此方法不起任何作用,因为您忽略了
anyMatch
的结果。如果要打印结果,可以将anyMatch
更改为filter
,然后打印:另外,如果您没有很好的理由使用
parallel
流,我建议您不要使用它,因为it has a lot more overhead