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

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%
Collection et Stream Java Discussion :

JDK 7: Proposition 9 : Notation de tableau pour List et Map -> Intégrée [Débat]


Sujet :

Collection et Stream Java

  1. #21
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonsoir

    Citation Envoyé par bouye Voir le message
    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.
    Il me semble que dans le cas d'une Map on n'utiliserait pas un indice entier mais une clé (n'importe quel objet donc), non ? Donc on s'en fout de l'ordre de stockage. Ce n'est pas ce que dit l'exemple ?

    yann

  2. #22
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Ah effectivement j'avais mal lu . Point de probleme sur les Map alors.
    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

  3. #23
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Points : 737
    Points
    737
    Par défaut
    Pour.
    Je préférerais aussi qu'une interface permette clairement ce type de syntaxe.

    Mon pour est motivé par le fait que l'utilisation de ces opérateur est déjà largement rependue dans le monde J2EE car la JSTL le fait donc pourquoi ne pas le faire en natif.

  4. #24
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    D'accord avec abiguba en ajoutant une interface Indexable.

    Citation Envoyé par bouye Voir le message
    il faut integrer une interface Indexable.

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  5. #25
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Contre.
    Pas vraiment d'argument, ça me plait pas c'est tout. Ca oblige d'aller voir le type manipulé de départ pour savoir si c'est une List ou un tableau, j'aime pas trop scroller quand je vérifie du code.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  6. #26
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par natha Voir le message
    Contre.
    Pas vraiment d'argument, ça me plait pas c'est tout. Ca oblige d'aller voir le type manipulé de départ pour savoir si c'est une List ou un tableau, j'aime pas trop scroller quand je vérifie du code.
    Ben franchement un tableau ou une List, ça se gère presque pareil. Moi je proposerais même d'ajouter ce qu'il faut aux tableaux pour qu'ils puissent être utilisés comme n'importe quelle Collection, car un tableau ce n'est qu'une Collection particulière de taille fixe (implémentation de l'interface Collection et pourquoi pas ajout d'une sous interface concernant les collections de taille fixe).

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  7. #27
    Membre confirmé
    Avatar de bmoussaud
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 218
    Points : 555
    Points
    555
    Par défaut
    trop compliqué !
    Benoit Moussaud - XebiaLabs - Automatisation des déploiements. Screencast & Demo

  8. #28
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    C'est vrai qu'on remarque un problème d'unification des opérateurs.

    Une classe c'est un peu comme une hashmap à la base, avec le nom des variables pour clé.

    Je peux écrire maClass.maVariable

    pourquoi dans une HasMap je ne peux pas écrire maHashMap.maKey

    et monTableau.3 ou maList.8

    On parle en réalité de chemins non ?

    Vous allez me répondre il manque l'opérateur isDeclared (genre instanceOf)

  9. #29
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    Citation Envoyé par nicorama Voir le message
    J'aimerais plutot un truc qui permet d'ajouter directement des objets à la création.
    Comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList list=new ArrayList(){obj1, obj2, obj3};
    par contre ça, ça peut être pratique
    Where is my mind

  10. #30
    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
    Citation Envoyé par bassim Voir le message
    Citation Envoyé par nicorama Voir le message
    J'aimerais plutot un truc qui permet d'ajouter directement des objets à la création.
    Comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList list=new ArrayList(){obj1, obj2, obj3};
    par contre ça, ça peut être pratique
    Cela pourrait se faire sans modifier le langage en ajoutant un constructeur/varargs à chaque implémentation de Collection, par exemple pour ArrayList :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	public ArrayList(E first, E...args) {
    		this(args.length + 1);
    		add(first);
    		for (E element : args) {
    			add(element);
    		}
    	}
    En attendant on peut faire cela en 2 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ArrayList<T> list=new ArrayList<T>();
    Collections.addAll(list, obj1, obj2, obj3);
    a++

  11. #31
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Contre, pour des raisons que bouye a évoqué.

    L'API actuelle incite à utiliser les Iterators, qui sont le moyen le plus rapide de parcourir une Collection. Cette proposition, appliquée à une LinkedList (ou à une TreeMap), remplace next() en temps constant par un get(i) en temps polynomial (logarithmique pour les TreeMap).

    De plus, j'ai déjà dit sur les switches que je n'aime pas trop mélanger syntaxe et API, que ce mélange devrait se limiter aux fonctions de la classe Object (comme + et toString, ou peut-être un jour switch et equals). Je trouve le foreach, qui s'applique aux Iterables ET aux tableaux, déjà un peu limite. Je n'ai pas encore changé d'avis.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  12. #32
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Points : 607
    Points
    607
    Par défaut
    En tout cas il faudrait pas que ca fasse comme en c++ que ca ajoute un élément dès qu'on accède a une clef de la liste ou de la map ...
    Et comment ferait on un remove d'une clef d'ailleurs ? on conserve la méthode remove() ?

  13. #33
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Citation Envoyé par kpouer Voir le message
    Et comment ferait on un remove d'une clef d'ailleurs ? on conserve la méthode remove() ?
    Toutes les propositions dont on débat aujourd'hui sont des ajouts, voire des raccourcis syntaxiques... En aucun cas cela ne supprime les fonctionnalités (et donc les méthodes) présentes aujourd'hui ! Sinon bonjour la compatibilité Donc oui, on pourra toujours se servir de remove(), get(), put()...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  14. #34
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Prudence
    Si c'est accepté un jour, il vaudrait mieux que ça impose une Interface.
    Mais se pose le problème du nommage des méthodes : dans une classe on n'a droit qu'à 1 seule méthode
    Toto get(Object clé)
    et 1 seul
    void put(Object clé, Toto valeur)
    donc soit les noms choisis seront "un peu tordus" (putAtindex ?), soit ils risqueront d'enter en conflit avec d'autres noms imposés par d'autres interfaces.

  15. #35
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Pour, ainsi que pour les autres operateurs ... vive la redefinition

  16. #36
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Citation Envoyé par Deadpool Voir le message
    Ben franchement un tableau ou une List, ça se gère presque pareil. Moi je proposerais même d'ajouter ce qu'il faut aux tableaux pour qu'ils puissent être utilisés comme n'importe quelle Collection, car un tableau ce n'est qu'une Collection particulière de taille fixe (implémentation de l'interface Collection et pourquoi pas ajout d'une sous interface concernant les collections de taille fixe).
    Dans l'utilisation faite par le programmeur, peut-être. Mais techniquement, il y a de sacrées différences. A mon avis, il ne faut pas mélanger ces concepts.

    pourquoi dans une HasMap je ne peux pas écrire maHashMap.maKey
    et monTableau.3 ou maList.8
    On parle en réalité de chemins non ?
    Mon dieu, quelle horreur. Les points sont sencés porter sur des éléments déclarés dans une classe et je ne souhaite en aucun cas les voir servir à autre chose(déjà que j'hésite sur son utilisation pour les properties), même si c'est vrai que la notion de Map s'y porte plutot bien.
    C++ qui permet de redéfinir presque tout, n'autorise par à redéfinir le point.


    Après avoir longtemps hésité, je dirais plutôt non car je pense qu'il faut éviter d'avoir des syntaxe commune pour des opérations différentes comme dans certains langages ou parfois on se demande vraiment ce qu'on est en train de manipuler.

  17. #37
    Invité
    Invité(e)
    Par défaut
    Qu'est ce que ça apporte?

    Modifier le langage, pourquoi pas si ça apporte un vrai plus.

    Mais là, quel est l'intérêt, c'est du détail?

  18. #38
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Pour... avec une nuance.

    J'utilise des multimaps et dans ce cas précis, je ne vois pas comment implémenter l'interface correctement : le code mmap[clé] = valeur ajouterait ou remplacerait l'élément courant ?

    Là où les méthode put() et set() ont leur spécificité (dans une multimap), écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mmap[clé] = valeur1;
    mmap[clé] = valeur2;
    serait lui réellement illisible pour l'usage qu'on en fait, contrairement à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mmap.put(clé,valeur1);
    mmap.put(clé,valeur2);

  19. #39
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2007
    Messages : 884
    Points : 2 018
    Points
    2 018
    Par défaut Pour
    Pour.Ca simplifie les get. C'est quand même plus clair
    function[in]=out;
    que
    function(in, out); ou l'on ne sait pas qui va dans quoi et si in est modifier au passage.
    Tout ce que j'écris est libre de droits (Licence CC0) et je vous incite à faire de même.

  20. #40
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Je suis plutot contre, Je trouve aussi que celà risque d'amener de la confusion (tableau/list) à la lecture du code... et aussi le lien avec de la Javadoc peut devenir difficile.

    Cette amélioration n'apporte pas grand chose d'un point de vue technique.

    L'introduction du forEach était une innovation plus intéressante.
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


Discussions similaires

  1. Réponses: 78
    Dernier message: 27/08/2009, 19h29
  2. [HTML] Tableau pour l'enregistrement des données
    Par ghyosmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 01/11/2005, 15h28
  3. Problème tableau pour une requête
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2005, 20h21
  4. [VB.NET] Quel objet tableau pour une recherche indexée ???
    Par Kitano dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/09/2004, 09h38

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