Publicité

Affichage des résultats du sondage: Êtes-vous pour ou contre cette proposition ?

Votants
262. Vous ne pouvez pas participer à ce sondage.
  • Pour

    112 42,75%
  • Contre

    150 57,25%
+ Répondre à la discussion
Page 1 sur 3 123 DernièreDernière
Affichage des résultats 1 à 20 sur 59
  1. #1
    Expert Confirmé Sénior

    Inscrit en
    mai 2003
    Messages
    3 289
    Détails du profil
    Informations forums :
    Inscription : mai 2003
    Messages : 3 289
    Points : 9 726
    Points
    9 726

    Par défaut JDK 7: Proposition 9 : Notation de tableau pour List et Map -> Intégrée

    Aujourd'hui :
    Code :
    1
    2
    3
    4
    5
    6
    void swap(List<String> list, int i, int j) {
        String s1 = list.get(i);
        list.set(i, list.get(j));
        list.set(j, s1);
    }
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Map<Input,Output> cache = …;
    Output cachedComputation(Input in) {
        Output out = cache.get(in);
        if (out == null) {
            out = computation(input);
            cache.put(in, out);
        }
        return out;
    }
    Demain :
    Code :
    1
    2
    3
    4
    5
    6
    void swap(List<String> list, int i, int j) {
        String s1 = list[i];
        list[i] = list[j];
        list[j] = s1;
    }
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Map<Input,Output> cache = …;
    Output cachedComputation(Input in) {
        Output out = cache[in];
        if (out == null) {
            out = computation(input);
            cache[in] = out;
        }
        return out;
    }
    Vincent Brabant

    Ne pas me contacter par MP ni par mail pour des questions techniques. Ma liste d'amis restera vide.

  2. #2
    Membre Expert Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 805
    Points : 1 326
    Points
    1 326

    Par défaut

    Bonsoir

    Et comment ça serait implémenté derrière ? C'est une redéfinition de l'opérateur [] ou c'est une fonctionnalité qui se limite aux listes et map ?

    Dans le cas de la première réponse : pourquoi pas ?
    Pour la deuxième réponse : POUR !!!

    Merci

    Yann

  3. #3
    Membre confirmé
    Inscrit en
    septembre 2007
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 282
    Points : 282
    Points
    282

    Par défaut

    J'ai voté contre, non pas que le principe me déplaise, mais au niveau lecture/compréhension du code, ça deviendrai chaud ... Surtout dans l'exemple ci-dessus, le put() de Map permet d'ajouter OU de remplacer un couple clé/valeur, et dans le cas de l'ajout, ça deviendrait étrange (pour moi) de l'écrire de cette façon...

  4. #4
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 026
    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 026
    Points : 20 808
    Points
    20 808

    Par défaut

    Pour, à condition que cela implique l'implémentation d'une interface spécifique (comme ce fut le cas pour le "for each" avec Iterable).

    a++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : décembre 2004
    Messages : 662
    Points : 319
    Points
    319

    Par défaut

    Ca sent le melange des tableaux à la lecture du code pour peu que deux variables ai des noms proches....

    Je m'abstient car pas vraiment pour mais je peux pas dire que je suis contre.
    En C on peut faire de la redefinition d'operateur....

  6. #6
    Membre actif Avatar de austin P.
    Inscrit en
    juin 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : juin 2004
    Messages : 181
    Points : 183
    Points
    183

    Par défaut

    contre

    la lecture du code n'est pas simple
    En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche. (Jacques Rouxel : "Les shadoks")

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    5 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 5 456
    Points : 6 361
    Points
    6 361

    Par défaut

    Pour, par contre je ne comprends pas le bémol de adiGuba...
    Pour la permutation dans la liste, il me semble intéressant de pouvoir faire
    Code :
    1
    2
    3
    4
     
    Object tmp = list[i];
    list[i] = list[j];
    list[j] = tmp;
    A ce sujet, à quand la méthode swap(...) ?

  8. #8
    Membre confirmé Avatar de bobuse
    Inscrit en
    janvier 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 229
    Points : 223
    Points
    223

    Par défaut

    Citation Envoyé par Napalm51 Voir le message
    Surtout dans l'exemple ci-dessus, le put() de Map permet d'ajouter OU de remplacer un couple clé/valeur, et dans le cas de l'ajout, ça deviendrait étrange (pour moi) de l'écrire de cette façon...
    Tu as failli m'avoir, mais je pense que tu te méprends ! Dans une map, tu n'as qu'une clé pour une valeur. Ainsi lors d'un put pour ajouter un couple, si la clé est déjà présente, la valeur présente est remplacé par la nouvelle. Non ?

    Citation Envoyé par adiGuba Voir le message
    Pour, à condition que cela implique l'implémentation d'une interface spécifique (comme ce fut le cas pour le "for each" avec Iterable).
    Hmmm, effectivement
    Ça devient intéressant, mais est-ce que ce n'est pas un peu risqué ?
    Boarf, je trouve pas d'exemple en fait, et c'est pas pire que le foreach

    Donc zou, pour !!

  9. #9
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 026
    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 026
    Points : 20 808
    Points
    20 808

    Par défaut

    Citation Envoyé par OButterlin Voir le message
    Pour, par contre je ne comprends pas le bémol de adiGuba...
    En fait je souhaiterais que cela ne se limite pas aux List et Map, mais que cela puisse être utilisé pour n'importe quelle classe qui implémenterait une interface spécifique.

    Par exemple :
    Code :
    1
    2
    3
    4
    public interface IndexedType<E> {
    	public E get(int index);
    	public E set(int index,  E element);
    }
    Toutes les classes qui implémentent cette interface pourront être utilisées avec les crochets, sans pour autant implémenter List.

    Bien sûr l'interface List étendra cette interface (cela ne posera aucun problème car elle comporte déjà ces méthodes) afin que cela fonctionne sur toutes les Lists...




    De la manière à ce qui a été fait pour le "for each". En réalité le "for each" n'attend pas une Collection mais un Iterable, qui définit seulement la méthode iterator().

    cela permettrait une gestion plus souple...


    a++

  10. #10
    Membre expérimenté Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    février 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : février 2005
    Messages : 647
    Points : 592
    Points
    592

    Par défaut

    ça me rappelle le Pascal

  11. #11
    Rédacteur
    Avatar de eclesia
    Inscrit en
    décembre 2006
    Messages
    1 938
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 1 938
    Points : 2 420
    Points
    2 420

    Par défaut

    Contre, je preferes la syntaxe actuelle qui rappelle bien plus qu'on manipule un object. redefinir les methodes put/get ... devient ambigue si on se met a manipuler les collections comme des tableaux.

  12. #12
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    février 2004
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : février 2004
    Messages : 1 255
    Points : 1 990
    Points
    1 990

    Par défaut

    Contre,

    On se dirige un peu trop vers de la surcharge d'opérateurs et je hais ce truc.
    Mauvaise lecture: bonjour pour faire le lien avec la javadoc correspondant a l'appel par exemple.
    Gain: que du sucre syntaxique, n'apporte vraiment rien d'autre.

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  13. #13
    Membre confirmé
    Inscrit en
    septembre 2007
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 282
    Points : 282
    Points
    282

    Par défaut

    Citation Envoyé par bobuse Voir le message
    Tu as failli m'avoir, mais je pense que tu te méprends ! Dans une map, tu n'as qu'une clé pour une valeur. Ainsi lors d'un put pour ajouter un couple, si la clé est déjà présente, la valeur présente est remplacé par la nouvelle. Non ?
    Oui c'est cela, c'est ce que je disais, enfin peut être pas en bons termes :p Mais justement remplacer le put() par un simple map[clé] = valeur me fait peur dans le cadre d'une nouvelle clé.

  14. #14
    Membre confirmé Avatar de bobuse
    Inscrit en
    janvier 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 229
    Points : 223
    Points
    223

    Par défaut

    Citation Envoyé par Napalm51 Voir le message
    Oui c'est cela, c'est ce que je disais, enfin peut être pas en bons termes :p Mais justement remplacer le put() par un simple map[clé] = valeur me fait peur dans le cadre d'une nouvelle clé.
    C'est exactement la même chose que pour une liste en fait. Dans le cas d'une liste ou d'un array, la clé est l'indice, si tu affectes un élément à un indice ou il en a déjà un, tu remplaces l'ancien, c'est tout.

  15. #15
    Membre émérite Avatar de Jester
    Inscrit en
    septembre 2003
    Messages
    806
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 806
    Points : 850
    Points
    850

    Par défaut

    La surcharge d'opérateur , on va y venir ;-)

  16. #16
    Membre confirmé Avatar de bobuse
    Inscrit en
    janvier 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 229
    Points : 223
    Points
    223

    Par défaut

    Citation Envoyé par Jester Voir le message
    La surcharge d'opérateur , on va y venir ;-)
    Non, je ne pense pas. Ici il ne s'agit pas de surcharge d'opérateur, mais de syntaxe.

  17. #17
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 026
    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 026
    Points : 20 808
    Points
    20 808

    Par défaut

    Citation Envoyé par bobuse Voir le message
    Ici il ne s'agit pas de surcharge d'opérateur, mais de syntaxe.
    Ben c'est quand même de la surcharge d'opérateur : pour l'opérateur [] sur des liste appeler get() ou set() selon le contexte...


    Mais bon cela reste relativement bien encadré et on est loin des surcharges dans tous les sens qu'il est possible de faire en C++

    Mais c'est sûr que cela pourrait avoir des effets indésirables (l'opérateur + dans une boucle en est un exemple frappant).

    a++

  18. #18
    Modérateur
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 747
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 747
    Points : 12 616
    Points
    12 616

    Par défaut

    Enfin dans une version complêtement différente et orientée TableModel serait de pouvoir faire çà sur des beans dont on définirait l'ordre à grand coup d'annotations.

    Au niveau des listes çà me semble un peu plus foireux au niveau lecture de code, ne plus savoir si j'ai une Collection ou un tableau 100 lignes plus bas...
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  19. #19
    Modérateur
    Avatar de bouye
    Homme Profil pro Fabrice Bouyé
    Développeur Java
    Inscrit en
    août 2005
    Messages
    4 344
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice Bouyé
    Âge : 37
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2005
    Messages : 4 344
    Points : 9 041
    Points
    9 041

    Par défaut

    Oui MAIS non seulement il faut integrer une interface Indexable, mais il faudra egalement ammender la doc de List (avertissement que les perfs peuvent varier suivant le type de liste) et LinkedList (precision en insistant LOURDEMENT sur la lenteur des acces via [] - similaires a ceux de get() et set()). De meme la doc de Map (avertissement que les resultats peuvent varier suivant le type de map) et HashMap (precision pour indiquer que deux appels successifs a myMap[i] peuvent ne pas retourner le meme element si un nouvel element a ete insere dans la map car l'ordre de stockage varie en fonction de la methode de hashage) doit etre ammendee. Quant a TreeMap, l'indice sera fonction de l'ordre de tris, j'imagine.
    Etc... Donc a manier avec precaution.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  20. #20
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : juillet 2006
    Messages : 766
    Points : 1 067
    Points
    1 067

    Par défaut

    J'aimerais plutot un truc qui permet d'ajouter directement des objets à la création.
    Comme
    Code :
    ArrayList list=new ArrayList(){obj1, obj2, obj3};

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •