最近遇到一个对我来说比较棘手的问题,通过java代码实现读取Execle中的数据存到MAP<String,List<Object(实体类中)>>,虽然不难,但是很久不写,感觉比较生疏,因此将写好的代码分享给大家,以供参考,如有什么问题和好的建议热烈欢迎评论区留言,共同探讨,共同进步。

public static Map<String,List<ExecleEntity>> read(String path) {
        File file = new File(path);
        InputStream inputStream = null;
        Workbook workbook = null;        
        //List<String> list1 = new ArrayList<String>();
        String str = "";
        try {
            //判断文件是否是Execle
            inputStream = new FileInputStream(file);
            //判断Excel的版本
            workbook = WorkbookFactory.create(inputStream);
            inputStream.close();
            //工作表对象
            Sheet sheet = workbook.getSheetAt(0);
            //总行数
            int rowLength = sheet.getLastRowNum();
            //工作表的列
            Row row = sheet.getRow(0);
            //总列数
            int colLength = row.getLastCellNum();
            //得到指定的单元格
            Cell cell = row.getCell(0);
            //得到单元格样式
            CellStyle cellStyle = cell.getCellStyle(); 
            //new HashMap将读取execle循环出的值存进Map中。
            map = new HashMap<String,List<ExecleEntity>>();            
           //根据行读取列数据,存到Map中。                                                                                                                                                 for (int i = 2; i < rowLength; i++) {
                row = sheet.getRow(i);
                ExecleEntity entity = new ExecleEntity();    
                    entity.setTestCase(row.getCell(0).getStringCellValue());
                    entity.setType(row.getCell(1).getStringCellValue());
                    entity.setElement(row.getCell(2).getStringCellValue());
                    entity.setAction(row.getCell(3).getStringCellValue());
                    entity.setText(row.getCell(4).getStringCellValue());
                    entity.setType1(row.getCell(5).getStringCellValue());
                    entity.setElement1(row.getCell(6).getStringCellValue());
                    entity.setAction1(row.getCell(7).getStringCellValue());
                    entity.setText1(row.getCell(8).getStringCellValue());
                    entity.setExpectValuel(row.getCell(9).getStringCellValue());                    
                //如果key在MAP中存在,将value值set进map中。
                if(map.containsKey(row.getCell(0).getStringCellValue())) {
                    List<ExecleEntity> list = map.get(row.getCell(0).getStringCellValue());
                    list.add(entity);
                    map.put(""+row.getCell(0).getStringCellValue()+"", list);
                }else {
                    List<ExecleEntity> list = new ArrayList<ExecleEntity>();
                    list.add(entity);
                    map.put(""+row.getCell(0).getStringCellValue()+"", list);
                }                
              }          
            } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }

MAP实现一个key,对应多个Value值。相关推荐

  1. Map之一个Key存多个Value的MultiValueMap(一个键多个值)

    在日常的开发中经常用到键值对,也就是Map啦,我们知道Map是一个接口,它的特点是一个Key对应一个Value,也就是一个键对应一个值,但是往往我们需要一个Key对应多个Value,这种时候系统的AP ...

  2. 【开源项目】Android下自定义HASH【支持一个key对应多个value--根据key排序】

    package com.peace.love.carpo_test.tool;import java.util.List; import java.util.Map; import java.util ...

  3. Map封装 (一个键多个值)

    转载:http://android.jobbole.com/83470/ 在日常的开发中经常用到键值对,也就是Map啦,我们知道Map是一个接口,它的特点是一个Key对应一个Value,也就是一个键对 ...

  4. 一个Key对应多个Value

    Map 一个key对应一个value,它可以满足大部分需求.但有时我要用到一个key对应多个value怎么办? 1.普通做法   Map<Object,List<Object>> ...

  5. 获取map第一个的key和value_Hadoop学习之路(3)Map-Shuffle-Reduce详解与源码

    @[TOC] 1 Split阶段 首先,接到hdf文件输入,在mapreduce中的map task开始之前,将文件按照指定的大小切割成若干个部分,每一部分称为一个split,默认是split的大小与 ...

  6. java map 随机取值_随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value...

    利用Java提供的Random类.从List或Set中随机取出一个元素,从Map中随机获取一个key或value. 因为Set没有提供get(int index)方法,仅仅能先获取一个随机数后.利用一 ...

  7. MAP一个KEY多个value处理方法

    遇到一个需求,查询每个人的工资汇总,按月份分割.但是查询是一次性出来多个人,所以说就用到了一个KEY对应多个value的情况. 简单来说处理逻辑是用Map<String,List>来封装数 ...

  8. 从Map中 取出第一个key/第一个value的方法

    从Map中取出第一个 key 和 value 的方法,使用Map.Entry进行操作: 可与LinckedHashMap(按元素存入顺序排序的有序Hash表)搭配使用:实现特定的业务要求: /*** ...

  9. 如果要将对象用作Map中的key,需要注意什么

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 本文阅读时间大约5分钟. 参考答案 如果将对象作为Map中的key,需要是实现该对象的equal ...

最新文章

  1. Kmeans聚类定义、KMeans聚类的步骤、Kmeans聚类常见问题及改进、Kmeans聚类的变形、Kmeans聚类的优缺点
  2. 使用ISA Server 2006的DMZ区保护内网的服务器群
  3. VBA 的编写与执行
  4. jQuery的三种bind/One/Live事件绑定使用方法
  5. Python中JSON的基本使用
  6. Eureka深入理解
  7. oracle账号密码修改后特别容易锁定_Oracle数据库用户锁定原因以及处理方式(ORA-28000)...
  8. C# 入门笔记(脚本)
  9. 中职计算机英语教师教学总结,中职计算机教师教学工作总结 (3000字).doc
  10. STM32工作笔记0022---STM32F1开发版 GPIO口工作原理
  11. YOLO系列专题——YOLOv3理论篇
  12. MOQL--操作数(Operand) (一)
  13. iPhone白苹果、卡在系统升级界面
  14. spy++是可以获取浏览器当前页面的标题的,并且可以根据“窗口标题”和“类名”实现对浏览器的显示和隐藏,
  15. Android手机模拟器旋转快捷键
  16. 一起来看看,除夕夜有哪些走心的文案?
  17. Window系统下如何生成ssh key以及如何在码云中添加公钥
  18. 原生js实现上拉加载
  19. Matlab利用plot作图线形颜色等选择
  20. 《Ensemble Learning Methods for Deep Learning Neural Networks》笔记

热门文章

  1. 系统设定工具(网络、打印机)与硬件侦测
  2. 基于大中台架构的电商业务中台最佳实践之一:业务中台总体架构介绍
  3. Java并发HashMap报错ConcurrentModificationException解决方案
  4. Android VOLD
  5. staruml 时序图操作
  6. 逻辑回归LogisticRegression
  7. js中appendChild()方法
  8. Ubuntu Kylin 20_10 在VMware Workstation Pro上安装
  9. 虹软人脸识别SDK接入Milvus实现海量人脸快速检索
  10. 小新padpro2021实体键盘快捷键备忘