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

API standards et tierces Java Discussion :

Tutoriel Guava, partie 3 : programmation fonctionnelle


Sujet :

API standards et tierces Java

  1. #1
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut Tutoriel Guava, partie 3 : programmation fonctionnelle
    Bonjour à tous,

    Je vous propose une série d'articles consacrés à la bibliothèque Guava, by Google, dont voici le troisième épisode : programmation fonctionnelle.

    http://thierry-leriche-dessirier.dev...fonctionnelle/

    Comme toujours, les remarques sont les bienvenues.

    Bonne lecture

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Algo reduce
    Bonjour,

    Très bon article, très ludique et précis à la fois. Félicitations.

    Une remarque concernant l'algo reduce proposé par Yann Caron : ne pouvait-on pas faire plus simple, en se passant de la récursivité, et on implémentant le calcul de la moyenne directement dans la fonction, comme suit ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static <F extends Object> F reduce2(Iterable<F> itrbl, Function<List<F>, ? extends F> fnctn) {
     
    		F result = null;
     
    		result = fnctn.apply(Lists.<F>newArrayList(itrbl));
     
    		return result;
    	}
    avec

    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
    29
    30
    31
    32
    33
    34
    35
     
    	@Test
    	public void testFilterMapReduceMoyenne2() {
     
    		float average = Iterables2.reduce2(
    				FluentIterable.from(chiens).filter(new Predicate<Chien>() {
    					@Override
    					public boolean apply(Chien t) {
    						// filter que les males
    						return t.getSexe() == SEXE.MALE;
    					}
    				}).transform(new Function<Chien, Float>() {
     
    					@Override
    					public Float apply(Chien f) {
    						return Integer.valueOf(f.getAge()).floatValue();
    					}
    				}), new Function<List<Float>, Float>() {
     
    					@Override
    					public Float apply(List<Float> f) {
     
    						float sum = 0.0f; 
     
    						if (f.isEmpty())
    							return 0.0f;
    						for(Float value : f) {
    							sum += value.floatValue();
    						}
     
    						return sum/f.size();
     
    					}
    				});
    	}
    Continuez à nous produire des articles de qualité !

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