en C # Je peux faire ceci:
Collection<Long> ids = new ArrayList<Long>(things.size()); for(Thing x : things) ids.add(x.getId());
5 Réponses :
in qui vous donnerait tous les identifiants Voici quelques info sur groovy a >, et quelque Différences par rapport à Java P> P> groovy code> vous ne devez faire que cela:
code> de toutes les choses
choses code> comme liste. p>
Vous pouvez essayer cette méthode. Il faut une collection, une méthode (à partir de l'API de réflexion) et une classe cible. Il invoque la méthode sur tous les membres de la collection et renvoie une liste des résultats.
try { Method getId = Thing.class.getMethod("getId", null); Collection<Long> result = select(things, getId, Long.class); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); }
Pas vraiment une réponse, mais vous pouvez attendre Java 8, qui aura un support d'expression Lambda. Autre que cela, je pense que Guava est votre meilleure option. P>
Avec la vitesse de Java, cela pourrait prendre quelques décennies? : p
C'est sur l'horaire d'octobre 2012, donc c'est juste derrière le coin;)
Mais cela ne signifie pas que je pourrai l'utiliser alors, hehe. Toujours sur 1,6 dans l'organisation, je travaille actuellement ...
Java 8 Lambda Expressions 2014 et comptage
en utilisant GUAVA , spécifiquement le Interface de fonction :
Collection<Long> ids = transform(things, new ThingFunction());
Utilisation de Apache Commons 'Beansutils et collections:
Collection<Long> ids = CollectionUtils.collect(things, new BeanToPropertyValueTransformer("id"));
Je suppose que
choses code> n'hérite pas de la collecte ou d'un tableau.
Pourquoi supposez-vous cela? Je boucle sur
choses code> à l'aide de
pour code>, il faut donc être un tableau ou un irable au moins.
@Brett Walker Une collection d'identifiants est requis, pas une autre collection de choses
@Brett Je ne veux pas une autre collection de choses, je veux une collection de valeurs d'une certaine propriété de choses, dans cet exemple leur identifiant.
Que voulez-vous faire avec cette collection de corrections. (Mis à part: - Le type de
Ce code> n'a pas été indiqué.) La question spécifique peut offrir différentes solutions lorsque le contexte plus large est pris en compte.
Type de
Ce code> et ce que je veux avec elle est assez non pertinent. Demandé des solutions générales, non spécifiques :)