JAVA tableau trié sans doublons

Fermé
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 - 19 sept. 2009 à 17:01
 java4ever - 19 sept. 2009 à 23:41
Bonjour les ami(e)s,

Encore une fois j'ai un souci de programmation java, vous pourrez peut être m'aider...
J'ai un tableau d'entiers, je veux savoir si il y a deux valeurs identiques ou plus dans un tableau trié.
merci de m'aider
A voir également:

1 réponse

Usdy, bonjour

Une réponse à ta question est facile si on sait que les classes de collection de type Set en java ne conservent pas deux valeurs identiques : pas exemple la classe treeSet, si on ajoute deux fois une même valeur, ne va en fait contenir cet élément qu'une fois.
Je ne sais pas si c'est un service, et je te conseille de trouver la solution toi même, mais pour gagner du temps, je te donne un exemple qui illustre ma solution :
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

/**
 * Coment connaître le nombre de doublons dans un tableau ?
 * On utilise la particularité de la classe TreeSet
 * Qui ne stocke pas deux valeurs identiques.
 */
public class ValeurEnDouble {
       // deux tableaux d'exemple :
	private static final Integer[] TABUNIQ = {1, 2, 3, 4, 5, 6,};
	private static final Integer[] TABDOUBLON = {1, 2, 2, 3, 4, 4,};

	// combien de doublons dans letableau passé en paramètre ?
	public static int getNbDoublons(Integer[] tab)
	{
		List<Integer> li = Arrays.asList(tab); // transforme le tableau en liste
		Set<Integer> unset = new TreeSet<Integer>(li); // transforme la liste en Set
		return tab.length - unset.size();  // nombre de doublons
	}
	public static void main(String[] args)
	{
	  System.out.println("nombre de doublons dans TABUNIQ " 
			  + getNbDoublons(TABUNIQ));	
	  System.out.println("nombre de doublons dans TABDOUBLON " 
			  + getNbDoublons(TABDOUBLON));	
	}
}

Le résultat est :
nombre de doublons dans TABUNIQ 0
nombre de doublons dans TABDOUBLON 2
C'est pas joli ?
6