实现思想list hashmap性能差别及对象引用之二
来源:互联网 发布:国外网络推广 编辑:程序博客网 时间:2024/05/29 18:18
简化了的代码
public List getData(Map map,List list){
Iterator it1=list.iterator();
while(it1.hasNext())
{
PortalStock portalStock1 = (PortalStock)it1.next();
String partno=portalStock1.getPartno();
PortalStock portalStock=new PortalStock();
PortalStock portalStock2=(PortalStock)map.get(portalStock1.getPartno());
if(null !=portalStock2)
{
BigDecimal qty = portalStock2.getTotalqty();
BigDecimal bottles = portalStock2.getTotalbottles();
BigDecimal weight = portalStock2.getTotalweight();
BigDecimal reciverqty = getzeroorself(portalStock1.getReciveqty());
BigDecimal reciverbottles = getzeroorself(portalStock1.getRecivebottles());
BigDecimal reciverweight = getzeroorself(portalStock1.getReciveweight());
BigDecimal deliverqty = getzeroorself(portalStock1.getDeliverqty());
BigDecimal deliverbottles = getzeroorself(portalStock1.getDeliverbottles());
BigDecimal deliverweight = getzeroorself(portalStock1.getDeliverweight());
portalStock1.setTotalqty(qty.add(reciverqty).subtract(deliverqty));
portalStock1.setTotalbottles(bottles.add(reciverbottles).subtract(deliverbottles));
portalStock1.setTotalweight(weight.add(reciverweight).subtract(deliverweight));
portalStock2.setTotalqty(qty.add(reciverqty).subtract(deliverqty));
portalStock2.setTotalbottles(bottles.add(reciverbottles).subtract(deliverbottles));
portalStock2.setTotalweight(weight.add(reciverweight).subtract(deliverweight));
}else{
BigDecimal qty = new BigDecimal(0);
BigDecimal bottles = new BigDecimal(0);
BigDecimal weight = new BigDecimal(0);
BigDecimal reciverqty = getzeroorself(portalStock1.getReciveqty());
BigDecimal reciverbottles = getzeroorself(portalStock1.getRecivebottles());
BigDecimal reciverweight = getzeroorself(portalStock1.getReciveweight());
BigDecimal deliverqty = getzeroorself(portalStock1.getDeliverqty());
BigDecimal deliverbottles = getzeroorself(portalStock1.getDeliverbottles());
BigDecimal deliverweight = getzeroorself(portalStock1.getDeliverweight());
portalStock1.setTotalqty(qty.add(reciverqty).subtract(deliverqty));
portalStock1.setTotalbottles(bottles.add(reciverbottles).subtract(deliverbottles));
portalStock1.setTotalweight(weight.add(reciverweight).subtract(deliverweight));
portalStock.setTotalqty(qty.add(reciverqty).subtract(deliverqty));
portalStock.setTotalbottles(bottles.add(reciverbottles).subtract(deliverbottles));
portalStock.setTotalweight(weight.add(reciverweight).subtract(deliverweight));
map.put(partno, portalStock);
}
}
return list;
}
public BigDecimal getzeroorself(BigDecimal b){
BigDecimal zero=new BigDecimal(0);
return zero=b==null?zero:b;
}
简化之前的代码
public List getData(Map map,List list){
Iterator it1=list.iterator();
while(it1.hasNext())
{
PortalStock portalStock1 = (PortalStock)it1.next();
Iterator it2=map.keySet().iterator();
Iterator it3=map.values().iterator();
boolean isHasSamePartno = false;
while(it2.hasNext()){
String Partno = (String)it2.next();
PortalStock portalStock2 = (PortalStock)it3.next();
if(portalStock1.getPartno().equals(Partno))
{
BigDecimal qty = portalStock2.getTotalqty();
BigDecimal bottles = portalStock2.getTotalbottles();
BigDecimal weight = portalStock2.getTotalweight();
BigDecimal reciverqty = portalStock1.getReciveqty();
BigDecimal reciverbottles = portalStock1.getRecivebottles();
BigDecimal reciverweight = portalStock1.getReciveweight();
BigDecimal deliverqty = portalStock1.getDeliverqty();
BigDecimal deliverbottles = portalStock1.getDeliverbottles();
BigDecimal deliverweight = portalStock1.getDeliverweight();
if("IN".equals(portalStock1.getStatus()))
{
portalStock1.setTotalqty(qty.add(reciverqty));
portalStock1.setTotalbottles(bottles.add(reciverbottles));
portalStock1.setTotalweight(weight.add(reciverweight));
}else if("OUT".equals(portalStock1.getStatus())){
portalStock1.setTotalqty(qty.subtract(deliverqty));
portalStock1.setTotalbottles(bottles.subtract(deliverbottles));
portalStock1.setTotalweight(weight.subtract(deliverweight));
}
isHasSamePartno = true;
break;
}
}
if(!isHasSamePartno){
BigDecimal zero = new BigDecimal(0);
String status = portalStock1.getStatus();
BigDecimal reciverqty = portalStock1.getReciveqty();
BigDecimal reciverbottles = portalStock1.getRecivebottles();
BigDecimal reciverweight = portalStock1.getReciveweight();
BigDecimal deliverqty = portalStock1.getDeliverqty();
BigDecimal deliverbottles = portalStock1.getDeliverbottles();
BigDecimal deliverweight = portalStock1.getDeliverweight();
if("IN".equals(status))
{
portalStock1.setTotalqty(zero.add(reciverqty));
portalStock1.setTotalbottles(zero.add(reciverbottles));
portalStock1.setTotalweight(zero.add(reciverweight));
}else if("OUT".equals(status)){
portalStock1.setTotalqty(zero.subtract(deliverqty));
portalStock1.setTotalbottles(zero.subtract(deliverbottles));
portalStock1.setTotalweight(zero.subtract(deliverweight));
}
map.put(portalStock1.getPartno(), portalStock1);
}
}
return list;
}
简化之前用的是两个嵌套循环,简化之后就只用了一个循环,性能有了很大提高,代码也变的简洁了
- 实现思想list hashmap性能差别及对象引用之二
- 实现思想list hashmap性能差别及对象引用之一
- 弱引用总结及HashMap、List弱引用并Lru实现
- Map实现之HashMap(性能及算法)
- 《Java编程思想》之对象的集合(数组、List、Set、Map)二
- HashMap源代码实现及性能优化
- HashMap实现原理及安全性能
- keySet 与entrySet 遍历HashMap性能差别
- keySet 与entrySet 遍历HashMap性能差别
- keySet 与entrySet 遍历HashMap性能差别
- keySet 与entrySet 遍历HashMap性能差别
- keySet 与entrySet 遍历HashMap性能差别
- keySet 与entrySet 遍历HashMap性能差别
- java 对象引用思想
- Java HashMap工作原理及实现(二)
- java对象和引用--HASHMAP
- 【引用】Java容器类List、ArrayList、Vector及map、HashTable、HashMap分别的区别
- 测试HashMap和ConcurrentHashMap的并发性能差别
- 对记录后台分页
- 替换(stuff)
- css中的滤镜
- SWAT3——我伤到人质了
- ORACLE数据库文件损坏,Error:ORA-01033:ORACLE initialization or shutdown in progress
- 实现思想list hashmap性能差别及对象引用之二
- 你没留意到的汽车艺术:让汽车不再冷冰冰!!(多图)
- Work2.0--真正工作在互联网上!
- 我的网址大全
- 图形图象研究与应用
- PSP 编译命令
- test
- 定时重启Apache、MySQL服务器
- javascript 获取设置cookie值!!!!