ステファン:
私は数で私の与えられたセットから連絡先を印刷したいと私は流れでそれをやろうとしています。少しはグーグルで、私はそれを私が今しようとしている方法を解決する人を見ました。しかし、私はこのエラーを取得していますIncompatible types: PhoneNumber is not convertible to CharSequence
し、私は何をすべきか理解していません。エラーは、メソッドにあるcontactsByNumber
コード:PhoneNumber.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);
}
}
GBlodgett:
このセクションで:
public void contactsByNumber(String number) {
phoneNumbers.stream().parallel().anyMatch(number::contains);
}
それはStream<PhoneNumber>
、あなたはとして扱うしようとしていますString
。あなたはそれのにマッピングする必要がありますname
属性:
public void contactsByNumber(String number) {
phoneNumbers.stream().parallel().map(PhoneNumber::getName).anyMatch(number::contains);
}
あなたが結果を無視するようしかし、この方法では、何もしませんanyMatch
。あなたは結果を印刷したい場合は、変更される可能性anyMatch
にfilter
して、印刷します:
public void contactsByNumber(String number) {
phoneNumbers.stream()
.parallel()
.map(PhoneNumber::getName)
.filter(number::contains)
.forEach(System.out::println);
}
あなたが使用する正当な理由がない場合、また、parallel
ストリームのように、私は、いずれかを使用していないお勧めします、それはより多くのオーバーヘッドをたくさん持っています