У меня есть метод, который работает, но мне нужно преобразовать его, чтобы использовать Groovy, так как базовая база кода - это отличный код.Я также считаю, что это можно сделать более кратко, используя Groovy, но я лучше использую лямбды, поэтому я попробовал это сначала, но я изо всех сил пытаюсь добиться того же с Groovy.Я был бы очень признателен, если бы кто-то мог помочь с этим.
Вот код:
public ArrayList<GameCredits> getCreditsList(CreditGained
creditsAccumulated,
Players playerList) {
List<GameCredits> credits = creditsAccumulated.credits
List<GameCredit> newCredits = []
boolean playerMatched
//Match Players to their credits and create new credits for unmatched
playerList.players.stream()
.filter { Player player -> player.playerKey != null }
.each { Player player ->
playerMatched = false
credits.stream()
.filter { GameCredit credit -> (credit?.creditIdentifier &&
credit?.creditIdentifier.equals(player.playerKey)) }
.each { GameCredit credit ->
credit.rank = player.rank
credit.playerEmail = player.emailAddress
credit.firstName = player.firstName
credit.lastName = player.lastName
playerMatched = true
}
if(!playerMatched){
GameCredit credit=new GameCredit()
credit.rank = player.rank
credit.playerEmail = player.emailAddress
credit.firstName = player.firstName
credit.lastName = player.lastName
newcredits.push(newGameCredits)
}
}
credits.addAll(newCredits)
credits
}
Вот то, что я пытался, но я знаю, что будет лучший способ.
public ArrayList<GameCredits> getCreditsList(CreditGained creditsAccumulated,
Players playerList) {
List<GameCredits> credits = creditsAccumulated.credits
List<GameCredit> newCredits = []
boolean playerMatched
//Match Players to their credits and create new credits for unmatched
playerList.players.findAll
{ Player player -> player.playerKey != null }
.each { Player player ->
playerMatched = false
credits
.findAll { GameCredit credit -> (credit?.creditIdentifier &&
credit?.creditIdentifier.equals(player.playerKey)) }
.each { GameCredit credit ->
credit.rank = player.rank
credit.playerEmail = player.emailAddress
credit.firstName = player.firstName
credit.lastName = player.lastName
playerMatched = true
}
if(!playerMatched){
GameCredit newGameCredits=new GameCredit()
newGameCredits.rank = player.rank
newGameCredits.playerEmail = player.emailAddress
newGameCredits.firstName = player.firstName
newGameCredits.lastName = player.lastName
newcredits.push(newGameCredits)
}
}
credits.addAll(newCredits)
credits
}
Спасибо