set java 小结

遇到一个问题 例如

传过来的字符串是1,2,8,10 现在要在里边添加一个5  变成1,2,5,8,10;

一开始的想法是先1,2,8,10后边加上,5 然后,切分 然后拼装

来发现set就可以完成这样的操作

上代码

    public Result addProperty(String ids, String props) {

        Result result = new DefaultResult();
        try {
            String[] flags = props.split(",");
            Set<String> set = new HashSet<String>();
            set.addAll(Arrays.asList(flags));

            List<Number> nums = new ArrayList<Number>();
            String[] idStrings = ids.split(",");
            for(String id:idStrings){
                if(id!=null){
                    nums.add(Long.valueOf(id));
                }
            }

            List<Activity> activities = activityDao.findByIds(nums);
            for(Activity activitiy : activities){
                Long flag = activitiy.getDocFlag();
                if(flag == null){
                    flag = DocFlagUtils.toLongFlag(props);
                    activitiy.setFlag(props);
                    activitiy.setDocFlag(flag);
                } else {
                    String dbFlag = DocFlagUtils.toStrFlag(flag);
                    set.addAll(Arrays.asList(dbFlag.split(",")));

                    String newFlags = StringUtils.join(set,",");
                    flag = DocFlagUtils.toLongFlag(newFlags);
                    newFlags = DocFlagUtils.toStrFlag(flag);
                    activitiy.setFlag(newFlags);
                    activitiy.setDocFlag(flag);
                }
                activityDao.update(activitiy);
            }
            result.setResultCode(new ResultCode(ResultCode.SUCCESS, "添加成功"));
        } catch (Exception e) {
            result.setResultCode(new ResultCode(ResultCode.FAILURE, "添加失败"));
            LOG.error("批量添加属性出错!", e);
        }
        return result;
    }


业务是这样的传过来 两个逗号相连的字符串

一个是信用卡id 一个是id里边的属性

首先把属性用,切分成string[] 然后组装成set

这个时候把信用卡原有的属性 用,切分成string[] 放到set里边

set里边有了两个string[] 之后 就可以做到自动排序合并的操作了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值