IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

redondance dans un tableau


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut redondance dans un tableau
    bonjour,

    J'ai un tableau de int, y-a-t-il une methode toute faite pour savoir si un entier (que l'on donne par un parametre) est enregistrer dans ce tableau ou faut-il la faire via une boucle for ?
    Ce serait pour empecher un entier de se mettre plusieur fois dans le tableau..

    Dans le même genre, j'aimerais pouvoir teste a tous moment que ce tableau ne contient pas de redondance...
    Et là, créer une methode est un peu plus balaise donc si une existe, c'est le top

    Merci

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    il faut que tu utilise une Collection, pas un tableau pour ce genre de besoins. Apres quant à celle qui te conviens le mieux, je te laisse choisir.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par romuluslepunk
    J'ai un tableau de int, y-a-t-il une methode toute faite pour savoir si un entier (que l'on donne par un parametre) est enregistrer dans ce tableau ou faut-il la faire via une boucle for ?
    Regarde dans la class Arrays, tu y trouveras quelques méthodes utilitaires dont binarySearch()...

    Ce serait pour empecher un entier de se mettre plusieur fois dans le tableau..

    Citation Envoyé par romuluslepunk
    Dans le même genre, j'aimerais pouvoir teste a tous moment que ce tableau ne contient pas de redondance...
    Et là, créer une methode est un peu plus balaise donc si une existe, c'est le top
    Je suis d'accord avec in, une Collection serait plus approprié (un Set en particulier). Sinon j'ai peur qu'il faille coder à la main le test...

    a++

  4. #4
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut
    Les collections sont pas vraiment appropriés car je connais a l'avance la taille et elle ne change pas

    J'ai pondu ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public static boolean contient(Object[] tableau, Object test)
    	{
    	for (int i = 0; i < tableau.length; i++)
    		{
    		if (tableau[i].equals(test))
    			return true;
    		}		
    	return false;
    	}
    public static boolean contient(int[] tableau, int test)
    	{
    	for (int i = 0; i < tableau.length; i++)
    		{
    		if (tableau[i] == test)
    			return true;
    		}		
    	return false;
    	}
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public static boolean redondance(Object[] tableau)
    	{
    	// parcourt le tableau
    	for (int i = 0; i < tableau.length; i++)
    		{
    		// test les element suivant
    		for (int j = i+1; j < tableau.length; j++)
    			{
    			if (tableau[i].equals(tableau[j]))
    				return true;
    			}
    		}				
    	return false;
    	}
    public static boolean redondance(int[] tableau)
    		{
    		// parcourt le tableau
    		for (int i = 0; i < tableau.length; i++)
    			{
    			// test les element suivant
    			for (int j = i+1; j < tableau.length; j++)
    				{
    				if (tableau[i] == tableau[j])
    					return true;
    				}
    			}				
    		return false;
    		}
    Pourriez-vous me dire ce que vous en pensez

    Merci

  5. #5
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    ben je pense que tu te complique la vie
    C'est pas si grave de connaitre la taille de la Collection.

    Si tu veux quand meme utiliser ta solution, peut etre pourrait tu te faciliter les choses. En triant ton tableau par exemple (si ça colle vac l'utilisation que tu en fait)

    De nombreux algo de recherche existent. Ton code me semble correct mais pour l'optimiser tu devrais utiliser des solutions existantes et éprouvées.

    Peut être sur le forum algo tu auras des exemples concret.

    Bonne chance


    [EDIT] Si par exemple tu utilisait un tableau trié, tu pourrait faire une recherche dichotomique, je crois que c'est en log(n) ... bref

  6. #6
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut
    Merci je vais regarder à celà.
    Par contre pour les liste, je ne peut y mettre du int

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<int> tab = new ArrayList<int>(9)
    ne passe pas

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par romuluslepunk
    Merci je vais regarder à celà.
    Par contre pour les liste, je ne peut y mettre du int
    Dans ce cas le tableau est peut être mieux...


    En effet il faudrait dans ce cas utiliser un ArrayList<Integer> avec l'autoboxing/unboxing mais cela pourrait avoir des effets pervers à cause de l'appel implicite de méthodes de conversion...

    a++

  8. #8
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par romuluslepunk
    Les collections sont pas vraiment appropriés car je connais a l'avance la taille et elle ne change pas
    Ce n'est pas une raison valable de ne pas utiliser les Collections... enfin à mon avis...

    [edit] je vois qu'entre temps in a répondu la même chose...



    Sinon pour tes méthodes, tu peux remplacer contient() par Arrays.binarySearch()>=0

    Sinon pour redondance() tu devrais également vérifier les valeurs nulles pour les tableaux d'objets, et éventuellement faire une comparaison via == avant equals() (si a==b alors a.equals(b) est forcément vrai, et cela évite des traitements supplémentaire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (tableau[i]==tableau[j] || tableau[i].equals(tableau[j]))
        return true;
    a++

Discussions similaires

  1. redondance dans un tableau multidimensionnel
    Par pontarose dans le forum Langage
    Réponses: 3
    Dernier message: 20/01/2017, 17h20
  2. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  3. Nombre des entiers redondants dans un tableau et leurs indices
    Par hongjan dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 11/03/2015, 11h41
  4. Redondance a supprimer dans un tableau
    Par blepharocyte dans le forum VBScript
    Réponses: 3
    Dernier message: 15/02/2010, 11h32
  5. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo