优化如下代码:ArrayNode ents2 = (ArrayNode)jsonNode.get("ents"); for (int i = 0; i < ents2.size(); i++) { List<BoAttribute> boAttrList = JsonUtil.toBean(ents2.get(i), BoEnt.class).getBoAttrList(); // 计算提交的 varchar 类型字段总长 int columnType = 0; for (BoAttribute ba : boAttrList) { if (Column.COLUMN_TYPE_VARCHAR.equals(ba.getColumnType())) { columnType += ba.getCharLen(); } } if (columnType > 16299){ throw new BaseException("字符串类型创建过长"); } }
时间: 2023-06-05 14:08:20 浏览: 90
ArrayNode ents2 = (ArrayNode) jsonNode.get("ents");
for (JsonNode ent : ents2) {
BoEnt boEnt = JsonUtil.toBean(ent, BoEnt.class);
List<BoAttribute> boAttrList = boEnt.getBoAttrList();
// 计算提交的 varchar 类型字段总长
int columnType = 0;
for (BoAttribute ba : boAttrList) {
if (Column.COLUMN_TYPE_VARCHAR.equals(ba.getColumnType())) {
columnType += ba.getCharLen(); // 使用累加的方式计算 varchar 字段总长
}
}
if (columnType > 16299){
throw new BaseException("字符串类型创建过长");
}
}
优化思路:
1. 使用增强for循环替换普通循环,增强for循环更加简洁易读。
2. 使用累加的方式计算 varchar 字段总长,避免重复计算和错误计算数据。
相关问题
优化如下代码:ArrayNode ents2 = (ArrayNode)jsonNode.get("ents"); for (JsonNode ent : ents2) { BoEnt boEnt = JsonUtil.toBean(ent, BoEnt.class); List<BoAttribute> boAttrList = boEnt.getBoAttrList(); // 计算提交的 varchar 类型字段总长 int columnType = 0; for (BoAttribute ba : boAttrList) { if (Column.COLUMN_TYPE_VARCHAR.equals(ba.getColumnType())) { columnType += ba.getCharLen(); } } if (columnType > 16299){ throw new BaseException("字符串类型创建过长"); } }
可以考虑将计算提交的 varchar 类型字段总长的代码优化为以下方式:
```
for (BoAttribute ba : boAttrList) {
if (Column.COLUMN_TYPE_VARCHAR.equals(ba.getColumnType())) {
columnType = Math.max(columnType, ba.getCharLen());
}
}
if (columnType > 16299){
throw new BaseException("字符串类型创建过长");
}
```
这样可以避免重复赋值,提高效率。
阅读全文