Comment implémenter un prédicat distinct à utiliser avec la méthode Collections Collections.Filter de Google Collections?Google Collections Distinct Predicate
3
A
Répondre
9
Si je vous comprends bien, je ne suis pas sûr que prédicats est la solution ici:
Création d'un prédicat comme ça, il faudrait maintenir une sorte d'état (à savoir: le maintien d'un ensemble de choses qu'il a vu déjà). Ceci est explicitement déconseillé dans le javadoc.
La manière habituelle d'obtenir les éléments distincts d'une collection consiste simplement à les ajouter tous à un ensemble. à savoir:
Set<T> uniqueItems = Sets.newHashSet(collectionWithPotentialDuplicates);
Si les égaux des méthodes sur <T>
ne définissent pas l'unicité de la façon dont vous voulez() et hashCode(), alors vous devriez écrire une méthode utilitaire qui fonctionne sur un Collection<T>
et un Function<T, Object>
qui retourne les éléments de type T
qui sont uniques après avoir été convertis au Function
0
Ma solution:
// Create unique list
final Set<String> unique = new HashSet<String>(FluentIterable
.from(sourceList)
.transform(new Function<T, String>() {
@Override
public String apply(T input) {
// Here we create unique entry
return input.toString();
}
}).toSet());
// Filter and remove duplicates
return FluentIterable
.from(prePscRowList)
.filter(new Predicate<T>() {
@Override
public boolean apply(T input) {
boolean exist = false;
if(unique.contains(input.toString())){
unique.remove(input.toString());
exist = true;
}
return exist;
}
}).toList();
Questions connexes
- 1. TreeMultimap dans Google Collections
- 2. MapMaker et ReferenceMap - Google Collections
- 3. PREDICATE (nom, arité)
- 4. Créer un multimap faible avec Google Collections
- 5. plusieurs clés et valeurs avec google-collections
- 6. Scala équivalent de Google Collections Lists.partition
- 7. Pourquoi Google Collections ne prend-il pas en charge MultiKeyMap comme Apache Collections?
- 8. Pourquoi Predicate <> est-il scellé?
- 9. IEnumerable <T> .Contains with predicate
- 10. C++ Comment avoir "NOT" (!) Dans Predicate?
- 11. est-il une chaîne pour mapper splitter dans google collections
- 12. filtre et trier la liste en utilisant les collections google
- 13. Pour instancier BiMap de google-collections en Java
- 14. google collections commander sur les valeurs de la carte
- 15. Collections Hibernate dans les collections
- 16. Mise en veille prolongée: Collections de collections
- 17. SELECT DISTINCT
- 18. MongoDB Collections
- 19. Zipping Collections
- 20. collections Exportation
- 21. Smalltalk collections
- 22. Android, collections
- 23. collections scalaires de requête dans HQL
- 24. Quel est le problème avec cette utilisation de Predicate/CreateDelegate?
- 25. Linq to Sql - Sélectionnez uniquement certaines informations (avec Predicate Builder)
- 26. Évaluation de l'expression xpath externe dans xpath-predicate
- 27. Linq to EF Expression Tree/Predicate contournement int.Parse
- 28. cacao iphone core-data predicate fetchrequest un-à-plusieurs
- 29. Conversion entre collections Hibernate et mes propres collections
- 30. Collections de collections et gestion de la mémoire Objective-C
Voulez-vous dire un prédicat qui pourrait être utilisé pour créer une vue filtrée o f une 'Collection' où vous ne voyez que chaque élément distinct de cette collection une fois? – ColinD
Oui, exactement cela. Bien que Michael D points, ce n'est probablement pas possible, car le maintien de l'état n'est pas conseillé. – javacavaj
Oui, j'allais déconseiller si c'était le cas. – ColinD