Return a new collection containing only the elements that satisfy predicate p. - Java java.util

Java examples for java.util:Collection Creation

Description

Return a new collection containing only the elements that satisfy predicate p.

Demo Code

/**//from  w ww  . j av a2s . co m
 *  Copyright 2009, 2010 The Regents of the University of California
 *  Licensed under the Educational Community License, Version 2.0
 *  (the "License"); you may not use this file except in compliance
 *  with the License. You may obtain a copy of the License at
 *
 *  http://www.osedu.org/licenses/ECL-2.0
 *
 *  Unless required by applicable law or agreed to in writing,
 *  software distributed under the License is distributed on an "AS IS"
 *  BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 *  or implied. See the License for the specific language governing
 *  permissions and limitations under the License.
 *
 */
import java.util.Collection;
import java.util.function.Predicate;

public class Main{
    /**
     * Return a new collection containing only the elements that satisfy predicate <code>p</code>.
     * <p/>
     * The type of collection <code>as</code> needs a parameterless constructor.
     */
    public static <A, AA extends Collection<A>> AA filter(AA as,
            Predicate<A> p) {
        AA filtered = (AA) buildFrom(as);
        for (A a : as) {
            if (p.test(a))
                filtered.add(a);
        }
        return filtered;
    }
    private static <A, B> Collection<A> buildFrom(Collection<B> as) {
        try {
            return as.getClass().newInstance();
        } catch (Exception e) {
            throw new IllegalArgumentException("Type " + as.getClass()
                    + " needs a parameterless constructor");
        }
    }
}

Related Tutorials