@@ -55,7 +55,7 @@ static <T> Set<T> filterSet(T[] values, Predicate<T> predicate) {
5555 }
5656
5757
58- static <T , S extends Iterable <T >> S filterAll (S values , Predicate <? super T > predicate ) {
58+ static <T , S extends Iterable <T >> S filter (S values , Predicate <? super T > predicate ) {
5959 boolean isSet = SetUtils .isSet (values );
6060 if (isSet ) {
6161 return (S ) filterSet (values , predicate );
@@ -66,5 +66,42 @@ static <T, S extends Iterable<T>> S filterAll(S values, Predicate<? super T> pre
6666
6767 //filter逻辑操作
6868
69+ //通用的filter过滤方法,对于集合iterable类型进行过滤处理
70+ static <T , S extends Iterable <T >> S filterAll (S values , Predicate <? super T >... predicates ) {
71+ return filter (values , Predicates .and (predicates ));
72+ }
73+
74+ //对iterable进行逻辑and 逻辑or处理
75+
76+ static <T > List <T > filterAllList (T [] values , Predicate <? super T >... predicates ) {
77+ return filterAll (Arrays .asList (values ), predicates );
78+ }
79+
80+ static <T > Set <T > filterAllSet (T [] values , Predicate <? super T >... predicates ) {
81+ return filterAll (SetUtils .ofSet (values ), predicates );
82+ }
83+
84+
85+ static <T , S extends Iterable <T >> S filterAny (S values , Predicate <? super T >... predicates ) {
86+ return filter (values , Predicates .or (predicates ));
87+ }
88+
89+ static <T > List <T > filterAnyList (T [] values , Predicate <? super T >... predicates ) {
90+ return filterAny (Arrays .asList (values ), predicates );
91+ }
92+
93+ static <T > Set <T > filterAnySet (T [] values , Predicate <? super T >... predicates ) {
94+ return filterAny (SetUtils .ofSet (values ), predicates );
95+ }
96+
97+
98+ //再添加一个findFirst方法
99+ static <T > T filterFirst (Iterable <T > values , Predicate <T >... predicates ) {
100+ return StreamSupport .stream (values .spliterator (), false )
101+ .filter (Predicates .and (predicates ))
102+ .findFirst ()
103+ .orElse (null );
104+ }
105+
69106
70107}
0 commit comments