遇到一个问题 例如
传过来的字符串是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[] 之后 就可以做到自动排序合并的操作了