AnyMatch corriente de defecto con "tipos incompatibles" error

Stefan:

Quiero imprimir los contactos de mi conjunto determinado por el número y yo estoy tratando de hacerlo con corrientes. Con un poco de googling vi gente que resuelve de la manera que estoy tratando en este momento. Pero estoy recibiendo este error Incompatible types: PhoneNumber is not convertible to CharSequencey que no entiendo lo que tengo que hacer. El error está en el método contactsByNumberCódigo: 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;
   }
}

Directorio telefónico

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:

En esta sección:

public void contactsByNumber(String number) {
    phoneNumbers.stream().parallel().anyMatch(number::contains);
}

se trata de una Stream<PhoneNumber>, y que está tratando de tratarla como una String. Es necesario hacer un mapa a ella de nameatributo:

public void contactsByNumber(String number) {
    phoneNumbers.stream().parallel().map(PhoneNumber::getName).anyMatch(number::contains);
}

Sin embargo este método no hace nada, ya que se ignora el resultado de anyMatch. Si desea imprimir los resultados, se puede cambiar anyMatcha filtere imprimir a continuación:

public void contactsByNumber(String number) {
    phoneNumbers.stream()
                .parallel()
                .map(PhoneNumber::getName)
                .filter(number::contains)
                .forEach(System.out::println);
}

Además, si usted no tiene una buena razón para usar una parallelcorriente, yo recomendaría no usar uno, ya que tiene mucho más sobrecarga

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=183878&siteId=1
Recomendado
Clasificación