【问题标题】:TreeMap implementation in java returns only last element [closed]java中的TreeMap实现仅返回最后一个元素[关闭]
【发布时间】:2016-05-14 21:31:21
【问题描述】:

这是一个我想将其对象放入 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 库从电子表格中获取值。 TreeMap 使用一个整数作为 Key 和 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());
        }

当所有值都在 Map 中设置时。我迭代它。我得到了正确的键,但所有对应的值(它是 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

我觉得实施有问题。请告诉我应该添加什么才能使其正常运行。

【问题讨论】:

  • 从字段声明中删除static
  • "TreeMap 使用一个整数作为 Key 和 Object 作为它的值" -- 提问的基本规则:不要告诉我们你做了什么,给我们看代码
  • @JimGarrison:如果您在循环内看到 -> if 条件,它就在代码中。 validJobcount 是一个整数。代码 sn-p 很大,所以我想明确提及它。正如安德烈亚斯所说,这是由于静态场。谢谢你的回复。 :)
  • @Andreas:谢谢。它现在工作正常。这是我的错。我对 Java 了解不多。

标签: java treemap


【解决方案1】:

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

你需要改成这样:

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

【讨论】:

    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2014-11-01
    • 2013-04-30
    • 1970-01-01
    • 2013-05-17
    相关资源
    最近更新 更多