El uso de Lambda y torrentes en Para cada resultado y regresar

awyeanah2:

estoy estado aprendiendo lambda, y ríos últimamente y tengo clase de sido echado en la parte más profunda muy temprano.

Actualmente tengo una lista de arreglo de libros, un usuario escribe en una palabra y si la palabra es igual a la autora de libros o el título, los libros toString (todos los atributos del libro con un formato agradable) se llama y regresé. Muy fácil y sin lambda. Pero con lambda i simplemente parece que no puede encontrar la manera de conseguir que todo funcione a cabo.

Además, con la lambda tengo que filtrar todos los libros de la matriz que tiene un estado de dañado o eliminado.

Lo que pasa es que tengo que devolver los resultados de la corriente para mostrar el tiempo en una interfaz gráfica de usuario, pero parece que no puede devolver ningún valor de una corriente.

Tengo un predicado que tratará de hacer el juego de parámetros de entrada. No tengo idea de si esto es correcto o no y estoy bastante quemado con tratar.

Me preguntaba los cambios necesarios tengo que hacer para conseguir que esto funcione?

public String getBookByTitleOrAuthor(String titleOrAuthor) {
    books.stream()
         .filter(BookPredicate.matchTitleOrAuthor(titleOrAuthor))
         .filter(returnedBook -> returnedBook.getBookStatus() != 
            Book.bookStatus.Damaged && returnedBook.getBookStatus() != 
            Book.bookStatus.Deleted)
         .forEach(returnedBook -> returnedBook.toString());

}


// My predicate
public static Predicate<Book> matchTitleOrAuthor(String titleOrAuthor) {
    return b -> titleOrAuthor.equals(b.getTitle()) || 
    titleOrAuthor.equals(b.getAuthor());
}

Gracias de antemano chicos! Lo siento si esto es una pregunta tonta.

Mi estado de enumeración libro y getBookStatus:

 public bookStatus getBookStatus() {
         return this.bookStatus;
    }

      public enum bookStatus {
       Available,
       Reserved,
       Borrowed,
       Damaged,
       Deleted

     }
Andrew Tobilko:

forEachrendimientos void, mientras que se necesita una String. Yo no iría con String, sin embargo. El método dice "vuelvo un libro de título o el autor", por lo que el usuario esperaría un Bookejemplo.

public Book getBookByTitleOrAuthor(String titleOrAuthor) {
    return books.stream()
                .filter(BookPredicate.matchTitleOrAuthor(titleOrAuthor))
                .filter(b -> {
                               final Book.bookStatus status = b.getBookStatus();
                               return status != null && 
                                      status != Book.bookStatus.Damaged && 
                                      status != Book.bookStatus.Deleted; 
                })  // can be moved into a BookPredicate method as well
                .findAny()
                .orElseThrow(() -> new IllegalArgumentException("There is no book for the given author or title."));
}

Supongo que te gusta

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