有没有办法处理LinkedHashMap中相同的值?

时间:2013-05-29 07:05:18

标签: java linkedhashmap

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

提前谢谢!

1 个答案:

答案 0 :(得分:0)

这就是地图的工作原理,你在这里有错误的容器,你可能想要一个包含自定义类或列表地图的列表:

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:

的建议使用List of List
Map<String,List<String>> data = new HashMap<>();
List<String> list = new LinkedList<>();
list.add(d1);
list.add(d2);
data.put(myKey,list);

带有类列表的冒险是你可以在里面处理你的数据(验证等)。