CollectionUtils

Le projet Commons Collections developpé par la communauté Apache existe maintenant depuis plusieurs années.
Pourtant son utilisation est parfois oublié dans les développements.
Je rappelle notamment l'existence dans cette librairie de la classe CollectionUtils qui permets de simplifier et de sécuriser les opérations sur les objets Collections.

Je vais donc présenter quelques méthodes utilitaires de cette classe pour éviter de réinventer la roue qui est toujours source d'erreur

  • Tester si une collection est vide en se protégeant des objets null :
 CollectionUtils.isEmpty(list); 
  • Compter le nombre d'éléments respectant un prédicat :
 int nombreElement = CollectionUtils.countMatches(list, new Predicate() { 	@Override 	public boolean evaluate(Object object) { 		Bean bean = (Bean) object; 		if (bean.isOk()) 		{ 			return true; 		} 		return false; 	} }); 
  • Tester si au moins un élément respecte un prédicat :
 boolean exist = CollectionUtils.exists(list, new Predicate() { 	@Override 	public boolean evaluate(Object object) { 		Bean bean = (Bean) object; 		if (bean.isOk()) 		{ 			return true; 		} 		return false; 	} }); 
  • Filter une collection respectant un prédicat :
 CollectionUtils.filter(list, new Predicate() { 	@Override 	public boolean evaluate(Object object) { 		Bean bean = (Bean) object; 		if (bean.isOk()) 		{ 			return true; 		} 		return false; 	} }); 
  • Transformer une collection en appliquant un transformer à tous les éléments d'une collection :
 CollectionUtils.transform(list, new Transformer() { 	int j = 0; 	@Override 	public Object transform(Object input) { 		Bean bean = (Bean) input; 		bean.setEntier(j++); 		return bean; 	} }); 

Cette liste est bien sur non exhaustive, il y a beaucoup d'autres méthodes intéressantes à disposition dans CollectionUtils.

Un commentaire

  1. Guava (maintenu par Google) fournit le même genre de fonctionnalités et bien plus encore, mais cette bibliothèque reste maintenue et est en évolution constante. De plus, elle fait la part belle aux Generics ce qui facilite bien des choses. 😉

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.