Search code examples
javacollectionsapache-commonsapache-commons-collection

CollectionUtils in java using predicate


I have a List<Object> and I want to return the first value that it finds true which matches a predicate.

I found that I can use CollectionUtils.find(collection,predicate) (Apache commons). Assuming that the Object contains a integer variable called : value , how do i specify in the predicate that the value can be 1,2,3,4,5 and to discard those that dont match. Is it possible to do 'contains'.

Also not using java 8 so unable to do stream.


Solution

  • To return the first element in the list which matches the given predicate:

    MyObject res = CollectionUtils.find(myList, new Predicate<MyObject>() {
        @Override
        public boolean evaluate(MyObject o) {
            return o.getValue() >= 1 && o.getValue() <= 5;
        }
    });
    

    To filter the list so that it only contains elements matching the predicate:

    CollectionUtils.filter(myList, new Predicate<MyObject>() {
        @Override
        public boolean evaluate(MyObject o) {
            return o.getValue() >= 1 && o.getValue() <= 5;
        }
    });
    

    You can notice that the Predicate<MyObject> is the same.