Я использую Java 8, и я хочу решить свою проблему, используя List.stream()
functionnality.Вычислить сумму атрибута объекта в списке List (с потоком)
Вот моя проблема:
Это Score
класса (Player
класса не имеет значения):
public class Score {
private Player player;
private int score;
public Player getPlayer() {
return player;
}
public void setPlayer(Player player) {
this.player = player;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
В начале моей программы, у меня есть список игроков, населенный:
List<Player> players; // Populated elsewhere
Моя программа затем выполняет то, что она должна делать, и я получаю переменную этого типа:
List<List<Score>> scores; // Populated elsewhere
Теперь я хочу, чтобы напечатать форматированный вывод, например, как это для каждого игрока:
Player.getName() + " : " + averagedScore;
где averagedScore
является суммой стоимости score.getScore()
для одного Player
делится на число вхождений в Score для этого Игрок в моих scores
переменных.
Теперь, что я сделал до сих пор:
for (Players player : players) {
scores.stream().filter(x -> x.stream().anyMatch(y -> y.getPlayer().equals(player)));
}
Но я не вижу, как рассчитать сумму element.getScore()
, содержащуюся в подсписков и фильтруется element.getPlayer()
Awesome, спасибо большое! Работает так, как ожидалось. – Thrax