首页 > 解决方案 > 哈希映射将多个域链接到一份报告中 - Java Eclipse

问题描述

我是 Java 新手,正在使用 Java Eclipse,所以请善待!我希望我能正确地提出这个问题,所以它是有道理的。

我有四个域 - 每个域都从四个不同的服务器中提取数据,因此需要将它们分开。但现在我需要创建一个报告,将四个域中的所有数据链接到一个报告中。有人建议使用我以前没有使用过的 hashmaps。我的四个域每个都有两个可以用作键的字段 - CostCenter 和 Serial。被提取的数据来自全国各地的机器。我需要一份报告中每台机器的所有数据。

这一切都被添加到一个现有项目中,该项目创建一个带有选项卡的网页,供用户单击以查看各种表格并获取特定于某个位置的数据,或者为所有机器/位置的每个页面创建一个报告。我只需要添加一个新链接供用户单击,该链接将为他们创建此电子表格。

我已经创建了域(DAO、DAOImpl、DTO 等),然后我将在我的 MainService.java 中创建组合报告。以下是我的 MainService 中声明的域(列表):

public List<Volume> getVolumeReport();

public List<BadFmPumps> getBadFmPumpsReport();

public List<BadCorobPumps> getBadCorobPumpsReport();

public List<McService> getMcServiceReport();

这是从每个数据库(域)中提取的数据:

public class Volume {

private String costCenter;
private String DAD;
private String division;
private String model; 
private String serial;
private String numDispensers;
private String colorantSys;
private String CCEGals2017;
private String BACGals2017;
private String CCEGals2018;
private String BACGals2018;
private String DNR2017;
private String DNR2018;
private String DNR2019; 

public class BadFmPumps {

private String costCenter; 
private String model; 
private String serial; 
private String badFmPumps;  
private String over10;
private String under10;

public class BadCorobPumps {

private String costCenter; 
private String model; 
private String serial; 
private String badPumpCount;  

public class McService {

private String costCenter; 
private String model; 
private String serial; 
private String crChargeTotals; 
private String emgCalls; 

因此,我需要将这些数据提取到 CostCenter + Serial 匹配的一个报告中。如何声明每个对象的哈希图以及如何声明密钥?

编辑 - -

我想我在这里有一些东西

public List<Volume> getVolumeReport();

Map<String, Volume> VolumeMap = new HashMap<String, Volume>();

for (Volume dispenser : VolumeList)

{

String volumeKey = new StringBuilder().append(Volume.getCostCenter()).append(Volume.getSerial()).toString();

VolumeMap.put(volumeKey, dispenser);

}

这个对吗?我收到一个语法错误 - Map 声明

Map<String, Volume> VolumeMap = new HashMap<String, Volume>(); 

给了我错误

Syntax error on token ";", { expected after this token

那里有什么我需要改变的吗?

标签: javahashmapreport

解决方案


您的代码中有一些不寻常的东西。我的猜测是你来自 C# 你没有使用正确的命名约定在这里看到它:https ://www.oracle.com/technetwork/java/codeconventions-135099.html

您定义了错误的方法,错误不在 Map 中,而是在方法定义中

public List<Volume> getVolumeReport(); <-------- this

应该

public List<Volume> getVolumeReport() {

然后在其末尾关闭您的方法(使用})。

Volume在你的 FOR 中,当你应该使用你创建的变量时,你试图直接访问方法:dispenser

String volumeKey = new StringBuilder()
                           .append(Volume.getCostCenter())
                           .append(Volume.getSerial())
                           .toString();

应该

String volumeKey = new StringBuilder()
                           .append(dispenser.getCostCenter())
                           .append(dispenser.getSerial())
                           .toString();

推荐阅读