• java中list强转为map类型


    起因:读取数据库文件的测试用例,测试用例需要存放到一个map中,方便下次调用,  

    读取的内容返回的内容存放在一个list中,并且数据内容是key=value的形式,最开始使用切片方式,做了很多无用功,后面老大指正使用索引方式可以强转为map,具体内容如下:

    读取出来的数据格式为:

    [{leader=test, item=重复注册失败, code=null, creatertime=2017-07-10 10:28:19, manual_test_time=1, module=com.xx.xx.RW_register, project_code=xx-pc, precondition=在注册页面, testname=register_repetition, funmodule=注册, teststep=1.邮箱栏输入无效邮箱注册如:xxcv@123
    2.点击注册按钮,注册失败,提示, exelevel=P1, test_describe=邮箱己注册过,注册失败, id=8aa184fb5d204068015d2a5376173c39, verification_content=1.注册提示“The email address is already in use”, updatetime=2017-07-10 10:28:19, remarks=null

    第一种:使用索引的,进行list的强转,代码如下:

    public static void  listcase2(){
            Map<String, String > map = new HashMap<String, String>();  
             String sql="select  *  from "+DBhandle.tabel+" where  project_code='rosewholesale-pc' ";
             Log.logInfo(sql);
             DBhandle handle=new DBhandle();    
            
             List  querylist2=handle.query(sql); //读取数据库文件后放入到一个list中
             Map<String, String> m = new HashMap<String, String>();//用于存放带转换后的map文件
            for(int i=0;i<querylist2.size();i++){
                 m=(Map<String, String>) querylist2.get(i); //通过索引方式进行转换类型的强转
                 
                 Set keySet = m.keySet(); // 读取map中的文件
                 Iterator<String> it = keySet.iterator();  
                 while(it.hasNext()){  //挨个遍历
                     Object  k = it.next(); // key  
                     Object v = m.get(k);  //value      
                     System.out.println("K:" + k + " V:" + v);  
                 } 
                
            }

    效果如下:

    第二种方法,使用split进行分割

    可以从得去的数据来看,每一个条数据,最开始使用,使用的逗号和等号方式组成一个字段,按照以上的内容我自己进行分割

    代码如下:

    public static void  listcase(){
            Map<String, Object> map = new HashMap<String, Object>();  
             String sql="select  *  from "+DBhandle.tabel+" where  project_code='rosewholesale-pc' ";
             Log.logInfo(sql);
             DBhandle handle=new DBhandle();    
             List  querylist2=handle.query(sql);
             Map<String, String> m = new HashMap<String, String>();
             String[] getcase = null;
             String[] cases = null;
             String[] keys=null;         
              getcase=querylist2.toString().split("},");//取出的数据很多,先进行使用逗号进行分割,分割
             for (int i = 0; i < getcase.length; i++) {
                Log.logInfo("使用和大括号 和逗号分割的测试用例:"+getcase[i]);
                  cases = getcase[i].replace("[{", "").replace("{", "").split(",");
                  Log.logInfo("在使用逗号进行分割:"+getcase[i]);
                  for (String s: cases) {
                      String[] keyText = s.split("="); // 转换key与value的数组  
                      Log.logInfo("在使用等号进行分割:"+getcase[i]);
                         if (keyText.length < 1) {  
                             continue;  
                         }  
                         String key = keyText[0]; // key  
                         String value = keyText[1]; // value
                     
                         map.put(key, value);  
                     }  
                  
                  Set keySet = map.keySet(); // key的set集合  
                  Iterator it = keySet.iterator();  
                  while(it.hasNext()){  
                      Object k = it.next(); // key  
                      Object v = map.get(k);  //value       
                      System.out.println("K:" + k + " V:" + v);  
                  }  
                  }
                  
            }

    效果也是一样,但是有一点,如果在value中有一个带有逗号的,那就可能会切错

  • 相关阅读:
    5 粘包现象与解决方案
    4 Socket代码实例
    协程与多路io复用epool关系
    基于selector的socket并发
    基于select类型多路IO复用,实现简单socket并发
    协程实现多并发socket,跟NGINX一样
    利用协程实现简单爬虫
    协程
    进程池pool
    进程锁 Lock
  • 原文地址:https://www.cnblogs.com/chongyou/p/7191376.html
Copyright © 2020-2023  润新知