首页 > 解决方案 > 如何从 Java Hashmap 为 pojo 类设置值

问题描述

我创建了一个下面的代码,它将读取 excel 表并将数据存储到 hashmap 中。

   public static void getValue()
    {
      Map<Integer, List<String>> getValues= new HashMap<Integer,List<String>>();
      String fileLocation = ".//clone1//Sample.xls";
      File f = new File(fileLocation);
      FileInputStream fis = new FileInputStream(f);
      Workbook book = new XSSFWorkbook(fis);
      Sheet sheet = book.getSheetAt(0);

        for (int i = 1; i <= sheet.getLastRowNum(); i++) 
        {
                Row row = sheet.getRow(i);
                List<String> datai = new ArrayList<String>();
        for (int j = 0; j < row.getLastCellNum(); j++) 
              {
                row.getCell(j, Row.CREATE_NULL_AS_BLANK);

                datai.add(row.getCell(j).getStringCellValue());
              }
                    getValues.put(i,datai);

        }
    }

HashMap 的输出有些人认为如下:

键:0 值:["mercury","Mercury"]

键:1 值:[“亚马逊”,“Kindle”]

“key”代表excel表格中的行数,“Values”代表用户名和密码列,存储在Map中的List中。

根据输出,excel 表有两个活动行和 4 个活动单元格值。

+示例 POJO 类+

   public class DataSet
    {
     private username;
     private password;

     //getter and setters methods for username, and password
    }

我想将这些值应用于 pojo 类。这是实现从 Map 设置 pojo 对象值的有效方法。

标签: javaspringpojodto

解决方案


You can convert it using stream in one sort:

List<DataSet> data = getValues.values().stream()
                .filter(l -> l.getSize() >= 2)
                .map(l -> new DataSet(l.get(0), l.get(1)))
                .collect(Collectors.toList());

推荐阅读