Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1026 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  moderniser mon java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

moderniser mon java

n°2273553
nraynaud
lol
Posté le 16-01-2016 à 01:18:08  profilanswer
 

Salut à tous, cela fait quelques années que j'ai pas fait de java, du coup je me demande ce qui a changé depuis le temps.
 
voici ce que j'ai fait:

Code :
  1. final HashMap<Color, Integer> histogram = new HashMap<Color, Integer>();
  2.        for (int i = 0; i < a.length; i += 3) {
  3.            final Color color = new Color(a[i + 0], a[i + 1], a[i + 2]);
  4.            System.out.println(color);
  5.            Integer count = histogram.get(color);
  6.            if (count == null)
  7.                count = 0;
  8.            histogram.put(color, count + 1);
  9.        }


du coup on sent bien que c'est assez accidentel comme code.
est-ce qu'ils ont ajouté des lazy maps ? est-ce qu'ils ont ajouté un opérateur genre elvis pour vérifier null ?  
 
Est-ce qu'il y a d'autres améliorations que je connais pas ?
 
(je vise java 7, mais pour le jeu de la discussion ça peut être intéressant de parler du 8)


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 16-01-2016 à 01:18:08  profilanswer
 

n°2273559
invik
J'ai pas ma manette :o
Posté le 16-01-2016 à 11:05:01  profilanswer
 

En Java 8 tu pourrais utiliser les Optional plutôt que de tester si count est null. Mais c'est à la marge.
Toujours en 8, éventuellement utiliser les stream et faire du map/reduce mais je suis pas convaincu que ce soit faisable avec ta structure en tableau. Il faudrait sans doute écrire un consumer custom.

n°2273563
nraynaud
lol
Posté le 16-01-2016 à 16:42:11  profilanswer
 

ok merci. du coup en 7 y'a pas grand'chose ?


---------------
trainoo.com, c'est fini
n°2273565
invik
J'ai pas ma manette :o
Posté le 16-01-2016 à 16:56:38  profilanswer
 

Non, les gros apports de 7, à mon sens, c'étaient le switch sur des strings, JDBC 4.1 et NIO2: http://fr.slideshare.net/boulderju [...] -in-java-7

n°2273591
souk
Tourist
Posté le 17-01-2016 à 16:46:05  profilanswer
 

try with resources et multicatch plutot, switch sur les strings on s'en balance un peu [:dawao]

n°2273593
DDT
Few understand
Posté le 17-01-2016 à 17:07:30  profilanswer
 

Et les diamants.

 
Code :
  1. final HashMap<Color, Integer> histogram = new HashMap<>();


Message édité par DDT le 17-01-2016 à 18:29:08

---------------
click clack clunka thunk
n°2273685
LeRiton
Posté le 18-01-2016 à 13:55:13  profilanswer
 

Même réponse qu'invik, les lambdas pourraient vraiment clarifier ton code mais ton tableau va poser problème en l'état, voir pour le transformer en amont.

 

Sous réserve de Java 8, un truc un peu plus sexy :

 
Code :
  1. final Map<Color, Long> histogram = Arrays.stream(a)
  2.                .map(aElem -> new Color(/* un truc à partir de tes éléments */))
  3.                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
 

Vachement plus concis, mais pas applicable en l'état avec ton tableau.

 

Edit : je pensais qu'il y aurait un moyen élégant de transformer ton tableau en une liste de triplet (et donc pouvoir utiliser le code ci-dessus), mais il n'y a rien de builtin pour partitionner un stream en collections de taille fixe (voir ce thread http://stackoverflow.com/questions [...] 8-stream). Peut-être en amont de ton algo ?
   


Message édité par LeRiton le 18-01-2016 à 14:44:14
n°2273715
nraynaud
lol
Posté le 18-01-2016 à 19:04:41  profilanswer
 

Pour être honnête, mon algo a déjà plus du tout cette gueule là , cette version sert de support de discussion. Je pense que ça a bien marché c'est juste que Java 7 à pas apporté ce que je pensais. Tout l'intéressant est en Java 8.


---------------
trainoo.com, c'est fini
n°2273731
invik
J'ai pas ma manette :o
Posté le 18-01-2016 à 23:13:31  profilanswer
 

Oui, ils faisaient un peu comme Intel avec ses processeurs donc une roadmap en Tick-Tock: release majeure (nouvelles fonctionnalités importantes) - release mineure (trucs à la marge, syntaxe)
Mais le retard sur Jigsaw a un peu pété le beau plan :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  moderniser mon java

 

Sujets relatifs
[HTA / JAVA] Comment ouvrir un fichierProjet pseudo Java
Développez vous encore en client lourd java ?[java] Char calculette
[JAVA] Calculette avec switchprobleme de décimal -Java
[JAVA]probleme de bouton personnaliser.De java a c++ ou VB.net
JAVA - Distribution d'un paquet de carteJAVA - Distribution d'un jeu de carte
Plus de sujets relatifs à : moderniser mon java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR