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>