private Map<String, ItemsCustomTargetResult> getItemsCustomTargetResult(BidNodeViewDto bidNodeViewDto, Map<String, String> targetCodeMap) { Map<String, ItemsCustomTargetResult> itemsCustomTargetResultMap = new HashMap<>(); List<String> colName = new ArrayList<>(); colName.add(Constants.ProjectView.COL_NAME_EXPRESSION); colName.add(Constants.ProjectView.COL_NAME_EXPERSSION_VALUE); colName.add(Constants.ProjectView.COL_NAME_TOTAL); colName.add(Constants.ProjectView.COL_NAME_PERCENT); colName.add(Constants.ProjectView.COL_NAME_UNIT); String value = null; for(String name : colName) { if (Constants.ProjectView.COL_NAME_EXPRESSION.equals(name)) { value = bidNodeViewDto.getExpressionName() + ""; }else if(Constants.ProjectView.COL_NAME_EXPERSSION_VALUE.equals(name)) { value = bidNodeViewDto.getExpressionVal() + ""; }else if(Constants.ProjectView.COL_NAME_PERCENT.equals(name)) { value = bidNodeViewDto.getPercentTotal() + ""; }else if(Constants.ProjectView.COL_NAME_TOTAL.equals(name)) { value = bidNodeViewDto.getAmount() + ""; }else if(Constants.ProjectView.COL_NAME_UNIT.equals(name)) { value = bidNodeViewDto.getUnitIndex() + ""; } String targetCode = targetCodeMap.get(name); if(Strings.isBlank(targetCode)) { continue; } ItemsCustomTargetResult itemsCustomTargetResult = new ItemsCustomTargetResult(); itemsCustomTargetResultMap.put(targetCode,itemsCustomTargetResult.obtainItemsCustomTargetResult(targetCode, null, value, null)); } return itemsCustomTargetResultMap; }
时间: 2024-04-04 08:35:53 浏览: 88
这是一个Java方法,它的作用是根据传入的参数生成一个Map。其中,参数bidNodeViewDto是一个自定义的数据传输对象,参数targetCodeMap是一个包含了一些字符串的Map。该方法内部首先创建了一个空的HashMap,然后定义了一个列表colName,并向其中添加了五个字符串常量。在接下来的循环中,该方法会遍历colName列表中的每一个字符串,通过判断该字符串的值来给变量value赋不同的值。然后,该方法会从targetCodeMap中根据字符串name对应的值获取一个targetCode,如果targetCode为空,则跳过本次循环。最后,该方法会创建一个ItemsCustomTargetResult对象,并将其放入HashMap中,该对象包含了targetCode、value和null三个属性。最终,该方法会返回生成的itemsCustomTargetResultMap。
相关问题
帮我审查一下下带private Map<String, ItemsCustomTargetResult> getItemsCustomTargetResult(BidNodeViewDto bidNodeViewDto, Map<String, String> targetCodeMap) { Map<String, ItemsCustomTargetResult> itemsCustomTargetResultMap = new HashMap<>(); List<String> colName = new ArrayList<>(); colName.add(Constants.ProjectView.COL_NAME_EXPRESSION); colName.add(Constants.ProjectView.COL_NAME_EXPERSSION_VALUE); colName.add(Constants.ProjectView.COL_NAME_TOTAL); colName.add(Constants.ProjectView.COL_NAME_PERCENT); colName.add(Constants.ProjectView.COL_NAME_UNIT); for(String name : colName) { String value = null; if (Constants.ProjectView.COL_NAME_EXPRESSION.equals(name)) { value = bidNodeViewDto.getExpressionName() + ""; }else if(Constants.ProjectView.COL_NAME_EXPERSSION_VALUE.equals(name)) { value = bidNodeViewDto.getExpressionVal() + ""; }else if(Constants.ProjectView.COL_NAME_PERCENT.equals(name)) { value = bidNodeViewDto.getPercentTotal() + ""; }else if(Constants.ProjectView.COL_NAME_TOTAL.equals(name)) { value = bidNodeViewDto.getAmount() + ""; }else if(Constants.ProjectView.COL_NAME_UNIT.equals(name)) { value = bidNodeViewDto.getUnitIndex() + ""; } String targetCode = targetCodeMap.get(name); if(Strings.isBlank(targetCode)) { continue; } ItemsCustomTargetResult itemsCustomTargetResult = new ItemsCustomTargetResult(); itemsCustomTargetResultMap.put(targetCode,itemsCustomTargetResult.obtainItemsCustomTargetResult(targetCode, null, value, null)); } return itemsCustomTargetResultMap; }
这段代码的主要作用是根据传入的参数`bidNodeViewDto`和`targetCodeMap`生成一个`Map`,其中`Map`的键值为`targetCode`,值为`ItemsCustomTargetResult`对象。
这个方法看起来没有太大问题,但是有一些可以改进的地方:
1. 在循环中,每次迭代都会新建一个`String`类型的变量`value`并初始化为`null`,这个可以放到循环外部先声明再初始化,避免每次都进行声明和初始化。
2. `if...else`嵌套语句比较多,可以考虑使用`switch`语句来代替。
3. 在循环中,如果`targetCode`为空字符串,则直接跳过当前迭代,没有任何处理。这个可以添加一个日志输出或者抛出异常来提醒调用者传入的参数有误。
下面是一种改进后的代码:
```
private Map<String, ItemsCustomTargetResult> getItemsCustomTargetResult(BidNodeViewDto bidNodeViewDto, Map<String, String> targetCodeMap) {
Map<String, ItemsCustomTargetResult> itemsCustomTargetResultMap = new HashMap<>();
List<String> colName = Arrays.asList(Constants.ProjectView.COL_NAME_EXPRESSION, Constants.ProjectView.COL_NAME_EXPERSSION_VALUE, Constants.ProjectView.COL_NAME_TOTAL, Constants.ProjectView.COL_NAME_PERCENT, Constants.ProjectView.COL_NAME_UNIT);
for (String name : colName) {
String value = null;
switch (name) {
case Constants.ProjectView.COL_NAME_EXPRESSION:
value = String.valueOf(bidNodeViewDto.getExpressionName());
break;
case Constants.ProjectView.COL_NAME_EXPERSSION_VALUE:
value = String.valueOf(bidNodeViewDto.getExpressionVal());
break;
case Constants.ProjectView.COL_NAME_TOTAL:
value = String.valueOf(bidNodeViewDto.getAmount());
break;
case Constants.ProjectView.COL_NAME_PERCENT:
value = String.valueOf(bidNodeViewDto.getPercentTotal());
break;
case Constants.ProjectView.COL_NAME_UNIT:
value = String.valueOf(bidNodeViewDto.getUnitIndex());
break;
default:
throw new IllegalArgumentException("Invalid column name: " + name);
}
String targetCode = targetCodeMap.get(name);
if (targetCode == null || targetCode.isEmpty()) {
// 日志输出或者抛出异常
continue;
}
ItemsCustomTargetResult itemsCustomTargetResult = new ItemsCustomTargetResult();
itemsCustomTargetResultMap.put(targetCode, itemsCustomTargetResult.obtainItemsCustomTargetResult(targetCode, null, value, null));
}
return itemsCustomTargetResultMap;
}
```
private Map<String, List<String>> children;
这是一个 Java 中的 Map 类型的变量,它的 key 是 String 类型,value 是 List<String> 类型。它被用来表示一种树形结构,其中每个节点都有一个字符串类型的标识符作为 key,对应的 value 是一个列表,包含了该节点的所有子节点的标识符。这种数据结构常用于表示层级关系,比如文件系统的目录结构、网站的导航菜单等。在程序中可以通过遍历树的方式来访问所有节点和它们的子节点。
阅读全文