Supprimer les doublons dans une liste [Résolu]

aboubakr664 - 23 sept. 2017 à 13:32 - Dernière réponse :  aboubakr664
- 23 sept. 2017 à 14:50
Bonjour,
ici, j'ai une liste qui contient plusieurs éléments avec des doublons
Voici les codes:
listjr est ma liste de pemiere avec des doublons et je voudrais le parcourir, puis récupérer dans les nouveaux éléments de liste de listjr peut sans doublons.


List<JourneesTravaillees> listjr = new ArrayList<>();
listjr = Utils.getIClass().DetailsPaie(txtDateDebut1.getValue().toString(), txtDateFin1.getValue().toString());


Set set = new HashSet();
set.addAll(listjr);
List<JourneesTravaillees> newlist= new ArrayList(set);
tableview.setItems(FXCollections.observableArrayList(Utils.transform1(newlist)));
colmat.setCellValueFactory(new PropertyValueFactory<>("matricule"));
colnom.setCellValueFactory(new PropertyValueFactory<>("nom_journalier"));
colnbheure.setCellValueFactory(new PropertyValueFactory<>("nb_heures"));
colsalBase.setCellValueFactory(new PropertyValueFactory<>("categorie"));
colCalaireNet.setCellValueFactory(new PropertyValueFactory<>("som"));
Afficher la suite 

4 réponses

Répondre au sujet
KX 15089 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 14 décembre 2017 Dernière intervention - 23 sept. 2017 à 14:19
0
Utile
Bonjour,

Pour que le HashSet fonctionne correctement il faut redéfinir les méthodes hashCode et equals dans ta classe JourneesTravaillees afin de savoir sur quels critères deux objets peuvent être considérés comme doublons.
Commenter la réponse de KX
aboubakr664 - 23 sept. 2017 à 14:30
0
Utile
2
merci mais comment ? en faisant mes recherche j'ai vu que cela .
KX 15089 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 14 décembre 2017 Dernière intervention - 23 sept. 2017 à 14:44
Dans la théorie il faut regarder la documentation de la classe Object dont hérite toutes les classes et qui définit ces deux méthodes :
En pratique, cela dépend des attributs de ta classe, c'est donc très spécifique à l'implémentation que tu en as faite.

Par exemple j'ai
class Point { int x, y; }
et j'utilises Eclipse pour générer automatiquement les deux méthodes, cela donne :

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + x;
    result = prime * result + y;
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Point other = (Point) obj;
    if (x != other.x)
        return false;
    if (y != other.y)
        return false;
    return true;
}

Evidemment, c'est de la génération automatique, ça peut se simplifier, et ce n'est qu'un exemple parmi d'autres de ce que l'on peut faire, ce qui compte c'est l'interprétation du résultat qui en est faite par des classes comme HashSet.
aboubakr664 > KX 15089 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 14 décembre 2017 Dernière intervention - 23 sept. 2017 à 14:50
Merci bcp
Je lai fait et sa marche a merveille
Merci KK pour votre précieuse aide
Commenter la réponse de aboubakr664

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.