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 :

Map erreur avec replace()


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut Map erreur avec replace()
    Bonjour,

    J'ai du passer à une version antérieur de Netbeans (7.4) pour pouvoir utiliser des bases de données.
    J'ai donc importer mon projet

    et j'ai une seule erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Map<Integer,Integer> map = new HashMap<>();
     
            for(int i =0 ; i< listRed.size(); i++){
            //Si l'élément existe déjà, on remplace la valeur
                if(map.containsKey(listRed.get(i))){
                    map.replace(listRed.get(i),map.get(listRed.get(i))+1);
                }
                //sinon on l'ajoute
                else{
                   map.put(listRed.get(i),1);
                }
            }
    Dans ce bout de code à la 6ème ligne j'ai cette erreur : replace est souligné en rouge
    Cannot find symbol
    symbol: method replace(Integer,int)
    location : variable map of type Map <Integer, Integer>

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    1- L'interface Map ne possède pas de méthode replace.
    2- La méthode put(key, value) ajoute si la clé n’existe pas dans le map, sinon il l'écrase.

    A+.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Le projet ext bien configuré pour utiliser la même version de java qu'avant? replace nécessite un jdk 1.8 et un compilateur java 8.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    replace nécessite un jdk 1.8 et un compilateur java 8.
    Effectivement, ça existe dans java 8 .

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Effectivement, ça existe dans java 8 .
    Et oui, les méthodes default qui s'inject sournoisement dans les implémentations par l'arrière sans prévenir

    J'ai du chercher aussi, je ne la connaissait pas.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    J'ai du passer à une version antérieur JDK 7 :/

    Je suis obligé.
    N'y a t'il pas une autre solution ?

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    ben il suffit de programmer sans utiliser replace() -_-°. On s'en est très bien passé jusqu'à la sortie de Java 1.8.

    Dans ton cas replace() ne sert à rien puisqu'il fait la même chose que put()
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pourquoi une version antérieur du jdk? cette version de netbeans peux compiler du java 8 pour autant que je sache.

    D'ailleur j'ai du mal à voir le lien entre la version de netbeans utilisée et la connexion à une base de données.

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Sinon, tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collections.frequency(Collection<?> c, Object o)
    pour compter le nombre d’occurrences.

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Wolalah en effet replace() fait la même chose que put() ^^, merci thelvin.

    Non je me suis mal exprimé ils utilisent le JDK 1.7 pour se connecter à leur base de donnée Access.
    Donc pour limiter les erreurs je dois utiliser le même.

    netBeans n'a rien a voir la dedans pardon :p

    merci à tous, tout marche bien.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    replace ne fait pas la même chose que put, attention!


    Replace ne stocke que si la clé est déjà présente. Put stocke dans tous les cas.

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Ok merci bon à savoir.
    Dans mon cas c'est bon

  13. #13
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par tchize_ Voir le message
    Et oui, les méthodes default qui s'inject sournoisement dans les implémentations par l'arrière sans prévenir
    Pourquoi sournoisement ?
    C'est une des meilleures nouveautés de Java 8 !


    Pour info si besoin l'implémentation des méthodes par défaut est généralement précisé dans la javadoc.
    C'est particulièrement utile dans ce cas si on veut migrer vers une version antérieure...



    Et d'ailleurs même en Java 8 replace() n'est pas le mieux adapté, puisqu'il existe merge() qui fait déjà exactement ce qui est demandé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Map<Integer,Integer> map = new HashMap<>();
            for (Integer key : listRed) {
                map.merge(key, 1, Integer::sum);
            }
    Si la clef "key" n'existe pas, elle prendra la valeur "1", sinon les deux valeurs seront combiné via la méthode Integer.sum()...



    a++

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    Pourquoi sournoisement ?
    C'est sournois sur les vieilles api genre Map, ça fait des années qu'on est habitué à l'absence du moindre changement dans ces interface et là tout d'un coup, paf, y a des méthodes en plus. Sauf qu'en vieux cons on oublie souvent ces ajouts et google nous renvoie à chaque fois sur la javadoc 7 où elles n'existent pas On se fait détruire notre expertise durement acquise
    En plus GWT 8 se fait attendre ce qui fait que pour les nouveautés java 8 je dois toujours me poser la question "code client ou code server ce bout là?" Particulièrement sur les interface où je dois me demander "default ou pas cette méthode?"

    Citation Envoyé par adiGuba Voir le message
    C'est une des meilleures nouveautés de Java 8 !
    On est d'accord.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. function replace et erreur avec retour a la ligne
    Par voyageurdumonde dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 03/03/2011, 00h20
  2. Erreur avec la fonction Replace
    Par johannj dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/08/2009, 15h42
  3. Erreur avec File.Replace
    Par JuTs dans le forum C#
    Réponses: 10
    Dernier message: 28/12/2007, 23h41
  4. [T-SQL] Erreur avec Replace..
    Par AbyssoS dans le forum Adaptive Server Enterprise
    Réponses: 5
    Dernier message: 31/03/2006, 17h55
  5. [T-SQL] Erreur avec Replace..
    Par AbyssoS dans le forum Sybase
    Réponses: 5
    Dernier message: 31/03/2006, 17h55

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