[ https://issues.apache.org/jira/browse/COLLECTIONS-530?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14015107#comment-14015107 ]
Erik commented on COLLECTIONS-530: ---------------------------------- Thanks Thomas, I was not aware of that. In that case, I agree that this feature should not be added to common-collections in the above form. Alternatively I could write a FilteredCollectionBuilder class like so: FilteredCollectionBuilder<E> builder = new FilteredCollectionBuilder<>(predicate); builder.addIfPredicateAccepts(e); builder.addAllAcceptedByPredicate(collection); PredicatedList<E> list = builder.createPredicatedListFromAcceptedElements(new ArrayList<E>()); PredicatedSet<E> set = builder.createPredicatedSetFromAcceptedElements(new ArrayList<E>()); Would you be interested in that? > Rejecting items on predicate failure without throwing an Exception > ------------------------------------------------------------------ > > Key: COLLECTIONS-530 > URL: https://issues.apache.org/jira/browse/COLLECTIONS-530 > Project: Commons Collections > Issue Type: Improvement > Components: List > Affects Versions: 4.0 > Reporter: Erik > > The PredicatedList class doesn't allow entries that fail the predicate, but > throws an Exception on entry. > The problem I have with this, is that it places the onus of filtering out > invalid entries on the caller. > I typically add items in a loop. The item added is the result of a method > call (which returns null if it can't create one). > This problem is so common for me that I have created my own FilteredList > class that simply ignores invalid entries. > I would like the PredicatedList class to be capable of rejecting items > without throwing an exception. > I don't mind writing the code for this, but there are a great many ways in > which this can be done. > So I was wondering what the interface should look like. > Separate FilteredList class. > Works, but seems a little verbose for the purpose > New factory method: filteredList(List<T> list, Predicate<? super T> > predicate) > Nice and simple, but doesn't allow extension; other ways of dealing with > predicate failure. > New factory method with enum: predicatedList(List<T> list, Predicate<? super > T> predicate, PredicateFailEnum action) > More verbose to use and adds an extra class, but allows more alternative ways > to deal with predicate failure. > One more nice thing is that it might be less confusing, > because choosing between predicatedList and the above filteredList might not > be so obvious. > New factory method with interface: filteredList(List<T> list, Predicate<? > super T> predicate, PredicateFailInterface action) > Complex, but the most flexible way of dealing with predicate failure. -- This message was sent by Atlassian JIRA (v6.2#6252)