apache.commons.collections4中的Predicate和Transformer

public static void main(String[] args) {
System.out.println("++++++++++++++++自定义类型的转换+++++++++++");
//判别式
Predicate<Employee> isLow = new Predicate<Employee>() {


@Override
public boolean evaluate(Employee object) {
return object.getSalary()<10000;
}
};
Predicate<Employee> isHigh = new Predicate<Employee>() {


@Override
public boolean evaluate(Employee object) {
return object.getSalary()>=10000;
}
};
Predicate[] pres = {isLow, isHigh};

//转换
Transformer<Employee, Level> lowTrans = new Transformer<Employee, Level>() {


@Override
public Level transform(Employee input) {
return new Level(input.getName(), "卖身中");
}
};
Transformer<Employee, Level> highTrans = new Transformer<Employee, Level>() {


@Override
public Level transform(Employee input) {
return new Level(input.getName(), "养身中");
}
};
Transformer[] trans = {lowTrans, highTrans};

//二者进行了关联
Transformer switchTrans = new SwitchTransformer(pres, trans, null);

List<Employee> list = new ArrayList<Employee>();
list.add(new Employee("老马", 1000000));
list.add(new Employee("老飞", 999));

Collection<Level> levelList = CollectionUtils.collect(list, switchTrans);

//遍历容器
Iterator<Level> levelIt = levelList.iterator();
while(levelIt.hasNext()){
System.out.println(levelIt.next());
}

}

该代码中Predicate判断和Transformer转换都使用了数组,Predicate[] pres = {isLow, isHigh},Transformer[] trans = {lowTrans, highTrans},它们之间是一一对应的关系,即:isLow和lowTrans对应,isHigh和highTrans对应。当isLow判断为true时,就选择对应的lowTrans输出转换类型。如果Transformer[] trans = {lowTrans, highTrans}顺序改为Transformer[] trans = {highTrans, lowTrans},那么如果isLow为true,那么将执行的是highTrans。

总之,它是顺序对应的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值