static <T> List<T> filter(List<T> list, Predicate<T> predicate) {
		List<T> results = new ArrayList<>();
		for (T current : list) {
			if (predicate.apply(current)) {
				results.add(current);
			}
		}
		return results;
	}
static <T> List<T> filter(List<T> list, Predicate<T> predicate) {
		List<T> results = new ArrayList<>();
		for (T current : list) {
			if (predicate.apply(current)) {
				results.add(current);
			}
		}
		return results;
	}
static < T > List < T > filter ( List < T > list , Predicate < T > predicate ) { List < T > results = new ArrayList <> ( ) ; for ( T current : list ) { if ( predicate . apply ( current ) ) { results . add ( current ) ; } } return results ; }
Filter input by using given predicate and return
filtered outputs.

@param list List input.
@param predicate Predicate.
@param <T> Type of elements.
@return Filtered outputs.
Filter input by using given predicate and return filtered outputs .