el valor máximo de la lista de la lista en Java

Adelmo Junior :

Estoy intentando conseguir el mayor valor mediante la aplicación de un filtro

Tengo un objeto que contiene un objeto de equipo y una lista de las tarjetas. así que necesito para obtener el valor más alto de la lista de tarjetas en el atributo de peso tarjeta, donde el equipo es A, y devolver al jugador.

public class Player {
  private String name;
  private List<Card> cards;
  private Team team;
  // getters and setters
}

public class Team {
  private int id;
  private int points;
  // getters and setters
}

public class Card {
  private int weightCard;
  // getters and setters
}

el código que yo estaba tratando de ejecutar

int maxPointsTeamA = players
    .stream()
    .filter( x -> x.getTeam().equals(teamA))
    .map(n -> n.getCards()
    .stream()
    .map( c -> c.getWeigthCard()).max(Comparator.naturalOrder()));

jugadores es una lista de jugadores (4 jugadores)

error:

Type mismatch: cannot convert from Stream<Object> to int

ayudarme por favor, es para el trabajo académico

rzwitserloot:

Reemplazar ambos de sus mapllamadas a mapToInt, para empezar. A continuación, no es necesario el Comparator.naturalOrder().

En segundo lugar, la primera llamada mapa contiene este lambda:

n -> n.getCards().stream().map(c -> c.getWeightCard()).

Eso convierte un solo 'n', sea lo que sea, en una corriente de cualesquiera rendimientos weightcard (que no es el código que ha pegado). El punto de mapes convertir una cosa en uno otra cosa, no una corriente de cosas. Se puede utilizar flatmappara ese lugar, por lo que presumiblemente, primero flatMap a una corriente de tarjetas, a continuación, asignar un int que a través de la función weightcard, y luego se puede máx.

Poniendolo todo junto:

int maxPointsTeamA = players
            .stream()
            .filter(x -> x.getTeam().equals(teamA))
            .flatMap(n -> n.getCards().stream())
            .mapToInt(c -> c.getWeightCard())
            .max()
            .orElse(0);

EDIT: Ah, sí, se me olvidó max () devuelve una OptionalInt; fijo.

Supongo que te gusta

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