ungars2
Messages postés4Date d'inscriptionsamedi 10 octobre 2009StatutMembreDernière intervention23 avril 2014
-
12 sept. 2011 à 20:14
ungars2
Messages postés4Date d'inscriptionsamedi 10 octobre 2009StatutMembreDernière intervention23 avril 2014
-
13 sept. 2011 à 20:00
Bonjour,
que pensez-vous de ceci :
/**
* METHODE DE CONTROLE D'UNICITE D'UN ELEMENT DANS UN TABLEAU.
* @param tableau Tableau de chaînes
* @return unicite (true ou false)
*/
private boolean controlerUniciteChaine(final String[] tableau) {
unicite = true;
nbDoublons = 0;
boolean absent;
if (tableau.length == 0) {
unicite = false;
} else {
HashSet<String> set = new HashSet<String>(tableau.length);
final Set<String> uniqueEntries = Collections.synchronizedSet(set);
for (int i = 0; i < tableau.length; i++) {
if (tableau[i].length() > 0) {
// "add" retourne "true" si ce SET ne contient pas déjà l'élément spécifié.
absent = uniqueEntries.add(tableau[i]);
if (!absent) {
nbDoublons = nbDoublons + 1;
}
}
}
}
if (nbDoublons > 0) {
unicite = false;
}
return unicite;
}
ungars2
Messages postés4Date d'inscriptionsamedi 10 octobre 2009StatutMembreDernière intervention23 avril 2014 13 sept. 2011 à 20:00
Aucun problème, ça marche au poil.
Et je prend en compte la remarque sur le dénombrement inutile de doublons, sauf si ce compteur est déclaré en dehors de la méthode, pour restitution dans un message d'erreur.
J'utilise "Collections.synchronizedSet" pour être très explicite et aussi cet ensemble peut-être utilisé dans une application multi-threads.