1

我设法制作了一个程序,我可以在其中从 excel 文件中读取数据并将它们存储在 mysql 的表中。我的程序读取每个文件的第一行,为表创建字段并将其余数据存储为每列中的值。正因为这是以编程方式发生的,所以我选择使用 LinkedHashMap 读取所有值。一切正常。但是当我完成并测试我的程序时,我的控制台中出现错误。在我试图解决它时在 atd 寻找它几天后,我在 LinkedHashMap 的文档中读到“如果映射先前包含键的映射,则旧值将被替换”。我的洞程序立刻被破坏了。原因是在我的文件中,某些列中的值相同。有人知道是否有办法解决这个问题,或者我必须从头开始我的程序?由于我没有多少时间,你能帮我找到办法吗?

先感谢您!

4

1 回答 1

0

这就是 Maps 的工作方式,你在这里有错误的容器,你可能想要一个带有自定义类的列表或 List 的 Map:

public class Data
{  
    private String d1;
    private String d2;

    public Date (String d1, String d2)
    {
        ...
    }  
    public parsedDataType getD1()... //might be the string, or an number, or something else
    ... 
}

public void read()
{
    ...
    List<Data> data = new LinkedList<>();
    ...
    Data d = new Data(d1,d2);
    data.add(d);
}

或者您可以使用 svz 建议的列表地图:

Map<String,List<String>> data = new HashMap<>();
List<String> list = new LinkedList<>();
list.add(d1);
list.add(d2);
data.put(myKey,list);

类列表的好处是您可以在内部处理您的数据(验证等)

于 2013-05-29T07:17:27.133 回答