实现思想list hashmap性能差别及对象引用之二

简化了的代码
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;
  } 
简化之前用的是两个嵌套循环,简化之后就只用了一个循环,性能有了很大提高,代码也变的简洁了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现HashMap对象的创建,可以按照以下步骤进行操作: 1. 首先,在代码中导入HashMap类的包,例如:import java.util.HashMap; 2. 然后,创建一个HashMap对象,例如:HashMap<String, String> map = new HashMap<String, String>(); 3. 在创建HashMap对象时,可以指定键和值的类型,例如上述代码中的String类型。 4. 接下来,可以使用put()方法向HashMap中添加键值对,例如:map.put("key1", "value1"); 5. 可以使用get()方法获取HashMap中指定键对应的值,例如:String value = map.get("key1"); 6. 可以使用remove()方法删除HashMap中指定键对应的键值对,例如:map.remove("key1"); 7. 可以使用size()方法获取HashMap中键值对的数量,例如:int size = map.size(); 8. 可以使用isEmpty()方法判断HashMap是否为空,例如:boolean empty = map.isEmpty(); 9. 可以使用keySet()方法获取HashMap中所有键的集合,例如:Set<String> keySet = map.keySet(); 10. 可以使用values()方法获取HashMap中所有值的集合,例如:Collection<String> values = map.values()。 范例:<<引用:插图1:使用put()方法在HashMap中创建和添加对象 插图2:使用size()方法获取HashMap的大小 插图3:使用get()方法在HashMap中检索对象 插图4:使用remove()方法从HashMap中删除对象 插图5: containsKey...。>> 例如,以下代码演示了如何创建一个HashMap对象,并向其中添加键值对: ``` import java.util.HashMap; public class Example { public static void main(String[] args) { HashMap<String, Integer> map = new HashMap<String, Integer>(); map.put("apple", 1); map.put("banana", 2); map.put("orange", 3); System.out.println(map); // 输出:{orange=3, banana=2, apple=1} } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值