// 整个platform里面当做一个List 每个检查点当做一个value List<Platform> platform = jsonRootBean.getPlatform(); // String代表 when里面的porttype Va代表聚合了alarmoid和value Map<Integer,Va> hashmap=new HashMap<>(); // Intger is symbole of CheckPoint Map<Integer,HashMap<Integer,Va>> hashMapl=new HashMap<>(); Va va=new Va(); for (Platform platform1 : platform) { Value value = platform1.getValue(); int dec = platform1.getCheckPoint().getDec(); List<Casee> casee = platform1.getCasee(); for (Casee casee1 : casee) { // get when里面的porttype int portType = casee1.getWhen().getPortType(); String alarmResOID = casee1.getWhen().getAlarmResOID(); va.setOidTemp(alarmResOID); va.setValue(value); hashmap.put(portType,va); hashMapl.put(dec, (HashMap<Integer, Va>) hashmap); } } System.out.println(hashmap); System.out.println(hashMapl); 优化这段java代码
时间: 2023-12-11 17:05:45 浏览: 136
可以优化的地方有:
1. 可以将HashMap<Integer, Va>替换为更具体的类型,比如HashMap<Integer, Value>,这样可以避免类型转换错误。
2. 在循环中创建Va对象,并不需要每次都创建一个新的对象,可以将Va对象的创建放到循环外面,只需要修改Va对象的值即可。
3. 在将hashmap放入hashMapl时,应该创建新的HashMap对象,而不是使用同一个HashMap对象,这样可以避免重复的值被覆盖。
优化后的代码如下:
```
List<Platform> platform = jsonRootBean.getPlatform();
Map<Integer, HashMap<Integer, Value>> hashMapl = new HashMap<>();
for (Platform platform1 : platform) {
Value value = platform1.getValue();
int dec = platform1.getCheckPoint().getDec();
HashMap<Integer, Value> hashmap = new HashMap<>();
List<Casee> casee = platform1.getCasee();
for (Casee casee1 : casee) {
int portType = casee1.getWhen().getPortType();
String alarmResOID = casee1.getWhen().getAlarmResOID();
Value oldValue = hashmap.get(portType);
if (oldValue == null) {
Value newValue = new Value();
newValue.setOidTemp(alarmResOID);
newValue.setValue(value);
hashmap.put(portType, newValue);
} else {
oldValue.setOidTemp(alarmResOID);
oldValue.setValue(value);
}
}
hashMapl.put(dec, hashmap);
}
System.out.println(hashMapl);
```
阅读全文