Java中的TreeMap实现仅返回最后一个元素

索拉·尼甘

这是一个我要将其对象放入TreeMap的类。

public class JobDefinition  {
    private static String jobDescription;
    private static String datasetName;
    private static String jobName;
    private static String responsiblePerson;
    public JobDefinition(String jobDesc, String dataSet, String jobName2, String person) {
        jobDescription=jobDesc;
        datasetName=dataSet;
        jobName=jobName2;
        responsiblePerson=person;
    }
    public  String getJobDescription() {
        return jobDescription;
    }

    public  String getDatasetName() {
        return datasetName;
    }

    public  String getJobName() {
        return jobName;
    }

    public  String getResponsiblePerson() {
        return responsiblePerson;
    }

}

在这里,我正在使用POI库从Spreadsheet获取值。TreeMap使用整数作为键,并将上述类的Object用作其值。

for (int rowCount = rowStartIndex+1; rowCount < rowEndIndex; rowCount++) 
    {
        String jobDesc=spreadsheet.getRow(rowCount).getCell(0).toString();
        String dataSet=spreadsheet.getRow(rowCount).getCell(1).toString();
        String jobName=spreadsheet.getRow(rowCount).getCell(2).toString();
        String person =spreadsheet.getRow(rowCount).getCell(3).toString();
        if(!jobName.equals("N/A") && jobName!=""){
            validJobCount++;
            jobDefinitionInfo.put(validJobCount, new JobDefinition(jobDesc,dataSet,jobName,person));
            }
    }
    for(Map.Entry<Integer,JobDefinition> entry : jobDefinitionInfo.entrySet()) {
          System.out.println(entry.getKey()+"::"+entry.getValue().getJobDescription());
        }

在“地图”中设置所有值时。我遍历它。我得到正确的键,但是针对它的所有对应值(这是JobDefinition类的对象)是放置的最后一个值。

输出::

1::Monthly UPDTMEND File
2::Monthly UPDTMEND File
3::Monthly UPDTMEND File
4::Monthly UPDTMEND File
5::Monthly UPDTMEND File
6::Monthly UPDTMEND File
7::Monthly UPDTMEND File
8::Monthly UPDTMEND File
9::Monthly UPDTMEND File
10::Monthly UPDTMEND File

预期产量

1::VRSFEND - TRANSACTION SWEEP
2::XCTLOAD 
3::CHEKDATE  - TO IDENTIFY BACKDATED TRANSACTIONS
4::EDITALIVE  
5::EDITB 
6::PRICE LOAD
7::ACCTSIM - run manually 
8::ACCTLIV - run manually by DVG                        
9::Check Sybase jobs
10::Monthly UPDTMEND File

我觉得实施有问题。请告诉我应该添加更多内容以使其正确运行。

若昂·埃斯佩兰辛哈(Joao Esperancinha)

您正在使用static参数。这意味着每次运行它们都会被覆盖,这完美地解释了为什么总是获取最后一个元素。

您需要更改为:

private String jobDescription;
private String datasetName;
private String jobName;
private String responsiblePerson;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档