Skip to content

Colecciones y streams #3

@flbulgarelli

Description

@flbulgarelli

En tu clase Venta declaraste un atributo ventas y lo inicialiste con []...

 class Venta {
 	int id;
 	Date fecha;
 	MetodoPago metodoDePago;
 	PrendaXVenta ventas = [];
 	
 	MetodoPago metodoDePago() {
 		return metodoDePago;
 	}
 	double totalAPagar() {
 		ventas.sum({ventaXPrenda => ventaXPrenda.pagoParcial()}); //no se cómo se hace esto en java, yo lo hice en wollok y lo trate de pasar a java
 	}
 }

Si bien eso en Haskell, Prolog y Wollok y muchos otros lenguajes más es una lista, en Java no es el caso.

Para crear una lista tenés que hacerlo instanciando explicitamente una, como por ejemplo new LinkedList<>()

List<PrendaXVenta> ventas = new LinkedList<>()

Por otro lado, para hacer sumatorias, mapeos y demases en Java necesitás un paso más: convertir tu colección en un stream, que es un objeto que nos permite operar de forma cómoda y eficiente sobre colecciones.

Por ejemplo, para hacer una sumatoria, tendrías que hacer lo siguiente (código copiado de la documentación de Stream):

     int sum = widgets.stream()
                      .filter(w -> w.getColor() == RED)
                      .mapToInt(w -> w.getWeight())
                      .sum();

Te dejo para que leas:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions