Je suis confronté à un problème que je n'arrive pas à résoudre:
J'ai lu une arrayliste code> à partir du téléphone: p> Je mets l'objet Maintenant, ce que je voudrais, c'est de: p> Il s'agit d'une activité de classement avec une arrayliste sur mesure code>, mais je n'arrive pas à le faire. p> Tout mon code: P> < Pré> xxx pré> p> joueur code> à partir de chaque jeu
dans un nouveau code> ArrayListe code>: p>
Gamer code> dans un
ArrayListe code> Si non déjà présent li>
Leadickpoints code> li>
4 Réponses :
Remplacement Equals and HashCode Méthodes Strong> de la classe d'objets de votre joueur. P>
puis avant d'ajouter de l'objet à ArrayList, vérifiez arraylist.Contains () code>, si oui, vous pouvez appeler
arraylist.indexof () code> méthode pour obtenir cet instance d'objet dans
ArrayList CODE>, incrémentez la valeur des noms de nom et appelez
araylist.set () code> pour remettre l'instance à la même position. P>
Vous pouvez utiliser Remplacer le hashcode et la méthode égale p> définir code> au lieu de
ArrayList code> pour une valeur unique.
Set<Gamer> gamerNoDuplicate=new HashSet();
if (gameResult != null) {
for (int i = 0; i < gameResult.size(); i++) {
if(gamerNoDuplicate.contains(gameResult.get(i).getWinnerGamer()){
Gamer alreadyExist = gamerNoDuplicate.indexOf(gameResult.get(i).getWinnerGamer());
alreadyExist.setLeaderPoints(alreadyExist.getLeaderPoints()+ gameResult.get(i).getWinnerGamer().getLeaderPoints());
}else{
gamerNoDuplicate.add(gameResult.get(i).getWinnerGamer());
}
}
}
Veillez bien! Mais j'ai eu une erreur sur indexof ... je ne sais pas pourquoi?
writeRead.getArrayList(this).stream() .map(Game::getWinnerGamer) .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(Gamer::getLeaderboardScore))) .entrySet() .stream() .sorted(Comparator.comparing(Map.Entry<Gamer, Integer>::getValue).reversed()) .map(Map.Entry::getKey) .collect(Collectors.toList());
Vous êtes les bienvenus :) Les flux nous aident à ne pas écrire de code redondant;)
Finalement je l'ai fait comme ça:
et ça marche parfaitement Merci! P>
if (gameResult != null) { for (int i = 0; i < gameResult.size(); i++) { gamerList.add(gameResult.get(i).getWinnerGamer()); } /* --------- */ for (int i = 0; i < gamerList.size(); i++) { Gamer gamer = gamerList.get(i); gamer.setLeaderboardScore(1); boolean isInArray = false; if (!gamerNoDuplicate.isEmpty()) { for (int j = 0; j < gamerNoDuplicate.size(); j++) { if (gamer.getName().equals(gamerNoDuplicate.get(j).getName())) { gamerNoDuplicate.get(j).addLeaderscorePoint(); isInArray = true; } } if (!isInArray) { gamerNoDuplicate.add(gamer); } } else gamerNoDuplicate.add(gamer); } }
Pouvez-vous montrer la classe
joueur code>