zoukankan      html  css  js  c++  java
  • Java遍历map和StringBuilder的用法

          List<Map<String, Object>> validInfo = perCaseDao.selectValidInfo(perCase);
          if(validInfo != null && validInfo.size()!=0){
            StringBuilder s = new StringBuilder("提交时验证失败!");
            StringBuilder s1=new StringBuilder();
            StringBuilder s2=new StringBuilder();
            StringBuilder s3=new StringBuilder();
            for (Iterator<Map<String, Object>> it = validInfo.iterator(); it.hasNext();) {
              Map<String, Object> info = it.next();
              String type = info.get("type").toString();
              Object msg= info.get("msg");
              if("1".equals(type)){
                s1.append(",").append(msg);
              } else if("2".equals(type)) {
                s2.append(",").append(msg);
              } else if("3".equals(type)) {
                s3.append(",").append(msg).append(" 权利单独共有时不能有多个权利人");
              } else if("4".equals(type)) {
                s3.append(",").append(msg).append(" 按份共有时占有比例之和不等于100%");
              }
            }
            if(s1.length()!=0){
              s.append(s1.substring(1)).append(" 未添加;");
            }
            if(s2.length()!=0){
              s.append(s2.substring(1)).append(" 材料未添加;");
            }
            if(s3.length()!=0){
              s.append(s3.substring(1)).append(";");
            }
            s.append("请检查确认无误后再提交。");
            throw new BusinessRuntimeException(s.toString());
          }
        
        //获取分类数据并转换为in条件
        List<Map<String, Object>> rtd = registTypeDao.selectIntegratedClassDetail();
        for (Iterator<Map<String, Object>> it = rtd.iterator(); it.hasNext();) {
          Map<String, Object> map = it.next();
          map.put("registType",
              "'" + ((String) map.get("registType")).replaceAll(",", "','") + "'");
          map.put("registTypeDesc",
              "'" + ((String) map.get("registTypeDesc")).replaceAll(",", "','")
                  + "'");
        }
    
        //查询当前和累计数据
        List<Map<String, Object>> rs1 = integratedDao
            .selectCdata(sDate, eDate, rtd,dept);
        List<Map<String, Object>> rs2 = integratedDao.selectTdata(eDate, rtd,dept);
        
        //合并数据 计算其他项数据
        int cl = rtd.size();
        Object o;
        int cAcceptOther;
        int cRatifyOther;
        int tAcceptOther;
        int tRatifyOther;
        for (int i = 0; i < rs1.size(); i++) {
          Map<String, Object> map = rs1.get(i);
          map.putAll(rs2.get(i));
    
          o = map.get("cAccept");
          cAcceptOther = o == null ? 0 : ((BigDecimal) o).intValue();
          o = map.get("cRatify");
          cRatifyOther = o == null ? 0 : ((BigDecimal) o).intValue();
          o = map.get("tAccept");
          tAcceptOther = o == null ? 0 : ((BigDecimal) o).intValue();
          o = map.get("tRatify");
          tRatifyOther = o == null ? 0 : ((BigDecimal) o).intValue();
    
          for (int j = 0; j < cl; j++) {
            o = map.get("cAccept" + j);
            cAcceptOther -= o == null ? 0 : ((BigDecimal) o).intValue();
            o = map.get("cRatify" + j);
            cRatifyOther -= o == null ? 0 : ((BigDecimal) o).intValue();
            o = map.get("tAccept" + j);
            tAcceptOther -= o == null ? 0 : ((BigDecimal) o).intValue();
            o = map.get("tRatify" + j);
            tRatifyOther -= o == null ? 0 : ((BigDecimal) o).intValue();
          }
    
          map.put("cAcceptOther", cAcceptOther);
          map.put("cRatifyOther", cRatifyOther);
          map.put("tAcceptOther", tAcceptOther);
          map.put("tRatifyOther", tRatifyOther);
        }
        return rs1;
      

    方法一:在for-each循环中使用entry来遍历

    Map<Integer,Integer> map = new HashMap<Integer,Integer>(); 
    for(Map.Entry<Integer,Integer> entry:map.entrySet()){ 
    System.out.println("key="+entry.getKey()+",value = "+entry.getValue()); 


    方法二:在for-each循环中遍历keys或values

    Map<Integer,Integer> map = new HashMap<Integer,Integer>(); 
    //遍历map中的键 
    for(Integer key:map.keySet()){ 
    System.out.println("key="+key);
    } 
    //遍历map中的值 
    for(Integer value:map.values()){ 
    System.out.println("value ="+value);
    }

    方法三:使用Iterator遍历

    Map<Integer,Integer> map = new HashMap<Integer,Integer>(); 
    Iterator<Map.Entry<Integer,Integer>> entries = map.entrySet().iterator(); 
    while(entries.hasNext()){
    Map.Entry<Integer,Integer> entry = entries.next(); 
    System.out.println("key="+entry.getKey()+"value = "+entry.getValue()); 
    }

    方法四:不使用泛型

    Map map = new HashMap(); 
    Iterator entries = map.entrySet().iterator(); 
    while(entries.hasNext()){ 
    Map.Entry entry = (Map.Entry)entries.next(); 
    Integer key = (Integer)entry.getKey(); 
    Integer value = (Integer)entry.getValue(); 
    System.out.println("key = "+key+",value = "+value);
    }
     

    总结
    如果只是获取key,或者value,推荐使用keySet或者values方式

    如果同时需要key和value推荐使用entrySet

    如果需要在遍历过程中删除元素推荐使用Iterator

    如果需要在遍历过程中增加元素,可以新建一个临时map存放新增的元素,等遍历完毕,再把临时map放到原来的map中
     

    Map<String, List<String>> map = new HashMap<String, List<String>>();
    map.put("qlrName", new ArrayList<String>());
    //遍历map
    for (Iterator<Entry<String, List<String>>> it = map.entrySet().iterator(); it
            .hasNext();) {
          Entry<String, List<String>> e = it.next();
          mv.addObject(e.getKey(), StringUtils.join(e.getValue(), ','));
        }

    //Iterator遍历list和map

    import java.util.*;

    
    

    public class TestIterator {

    
    

    public static void main(String[] args) {

    
    

    List list=new ArrayList();

    
    

    Map map=new HashMap();
    //初始化list和map的数据
    for(int i=0;i<10;i++){

    
    

    list.add(new String("list"+i) );

    
    

    map.put(i, new String("map"+i));

    
    

    }

    
    

    Iterator iterList= list.iterator();//List接口实现了Iterable接口
    //循环list
    while(iterList.hasNext()){

    
    

    String strList=(String)iterList.next();

    
    

    System.out.println(strList.toString());

    
    

    }

    
    

    Iterator iterMap=map.entrySet().iterator();
    //循环map
    while(iterMap.hasNext()){

    
    

    Map.Entry strMap=(Map.Entry)iterMap.next();

    
    

    System.out.println(strMap.getValue());

    
    

    }

    
    

    }

    
    

    }

     
  • 相关阅读:
    网络摄像头监控中什么情况下需要使用流媒体转发服务器?
    流媒体播放器播放h264编码视频与h265编码视频哪个更清晰?
    RTMP推流视频流媒体服务如何实现网络传输?
    web视频直播服务器更改端口号后录像功能失效问题解决
    互联网视频直播/点播流媒体服务器使用http和rtmp做点播时有什么区别?
    视频互联网直播/点播服务器中关于内容分发CDN的相关问题汇总
    网页直播系统推流端和拉流端都有哪些环节?
    自建视频流媒体服务器需要满足哪些条件?
    线上课堂教育行业选择互动直播时有哪些直播方案?
    互联网直播点播平台在进行iframe直播分享时如何禁止本地视频自动播放?
  • 原文地址:https://www.cnblogs.com/gaomanito/p/8674792.html
Copyright © 2011-2022 走看看