【QLExpress系列】 QLExpress对集合进行操作,包括并集,交集等

QLExpress相关文档可以参考:文档连接

由于网上资料很少,都是demo相互照搬。没有我想要的需求demo,所以看文档写了QLExpress对集合进行并集,交集等操作的demo,抛砖引玉,仅供参考。

import cn.hutool.json.JSONUtil;
import com.ql.util.express.DefaultContext;
import com.ql.util.express.ExpressRunner;
import com.ql.util.express.Operator;

import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * 
 * @date : 2022/12/12 16:39
 */
public class SubOperator {


    /**
     * 两个集合 交集
     * 判空操作忽略,请自行补充
     */
    static class ListSubOperator extends Operator {
        public Object executeInner(Object[] list) {
            Set<Long> set1 = (Set<Long>) list[0];
            Set<Long> set2 = (Set<Long>) list[1];
            return set1.stream().filter(set2::contains).collect(Collectors.toSet());
        }
    }
    
    /**
     * 两个集合并集
     * 判空操作忽略,请自行补充
     */
    static class ListAddOperator extends Operator {
        public Object executeInner(Object[] list) {
            Set<Long> opdata1 = (Set<Long>) list[0];
            Set<Long> opdata2 = (Set<Long>) list[1];
            opdata1.addAll(opdata2);
            return opdata1;
        }
    }

    public static void main(String[] args) throws Exception {
        ExpressRunner runner = new ExpressRunner();
        DefaultContext<String, Object> context = new DefaultContext<String, Object>();
        runner.addOperator("addAll", new ListAddOperator());
        runner.addOperator("sub", new ListSubOperator());
        Set<Long> set1 = new HashSet<>();
        Set<Long> set2 = new HashSet<>();
        Set<Long> set3 = new HashSet<>();
        
        set1.add(1L);
        set1.add(2L);
        set1.add(3L);
        
        set2.add(2L);
        set2.add(4L);
        set2.add(6L);

        set3.add(1L);
        set3.add(6L);
        set3.add(8L);
        
        context.put("a", set1);
        context.put("b", set2);
        context.put("c", set3);
        //
        Object r = runner.execute("(a addAll b) sub c", context, null, false, false);
        System.out.println(JSONUtil.toJsonStr(r));
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值