set java 小结

来源:互联网 发布:网络歌曲串烧联唱 编辑:程序博客网 时间:2024/06/05 11:18

遇到一个问题 例如

传过来的字符串是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