BeanRelation增加lastList可以指定中断条件的方法。

yun-zuoyi
钮海涛 4 years ago
parent 3e3d6450a8
commit 038d07f337

@ -204,10 +204,17 @@ public class BeanRelation {
public static <T extends BaseBean> List<T> lastList(BaseBean bean, Enum<?>... holders) { public static <T extends BaseBean> List<T> lastList(BaseBean bean, Enum<?>... holders) {
List<T> result = new ArrayList<>(); List<T> result = new ArrayList<>();
lastListImpl(result, bean, bean, holders, 0); lastListImpl(result, bean, bean, null, holders, 0);
return result; return result;
} }
private final static <T extends BaseBean> boolean lastListImpl(List<T> result, BaseBean bean, BaseBean self,
public static <T extends BaseBean> List<T> lastList(BaseBean bean, Predicate<T> pred, Enum<?>... holders) {
List<T> result = new ArrayList<>();
lastListImpl(result, bean, bean, pred, holders, 0);
return result;
}
private final static <T extends BaseBean> boolean lastListImpl(List<T> result, BaseBean bean, BaseBean self, Predicate<T> pred,
Enum<?>[] holders, int index) { Enum<?>[] holders, int index) {
if (index >= holders.length) { if (index >= holders.length) {
if (self == bean) { if (self == bean) {
@ -215,15 +222,18 @@ public class BeanRelation {
} }
index = 0; index = 0;
self = bean; self = bean;
if (pred != null && pred.test((T)bean)) {
return true;
}
} }
boolean bNotLast = true; boolean bNotLast = true;
List<BaseBean> nextBeans = list(bean, holders[index]); List<BaseBean> nextBeans = list(bean, holders[index]);
for (BaseBean nextBean : nextBeans) { for (BaseBean nextBean : nextBeans) {
if (lastListImpl(result, nextBean, self, holders, index + 1)) { if (lastListImpl(result, nextBean, self, pred, holders, index + 1)) {
result.add((T)nextBean); result.add((T)nextBean);
bNotLast = false;
} }
bNotLast = false;
} }
return index == 0 && bNotLast; return index == 0 && bNotLast;
} }

Loading…
Cancel
Save