有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我已经设法制作了一个程序,从excel文件中读取数据,并将它们存储在mysql的表中。我的程序读取每个文件的第一行,为表创建字段,并将其余数据作为值存储在每列中。因为这是通过编程实现的,所以我选择使用LinkedHashMap读取所有值。一切正常。但是当我完成并测试我的程序时,我的控制台中出现了一个错误。在我试图解决它的过程中,经过几天的atd查找之后,我在LinkedHashMap的文档中读到“如果该映射以前包含密钥的映射,那么旧值将被替换”。我的洞计划立刻被摧毁了。原因是在我的文件中,有些列中的值是相同的。 有人知道是否有办法解决这个问题,或者我必须从头开始我的程序吗?既然我没时间做这件事,你能帮我想个办法吗

提前谢谢你


共 (1) 个答案

  1. # 1 楼答案

    这就是映射的工作方式,您在这里使用了错误的容器,您可能想要一个带有自定义类的列表或列表的映射:

    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);
    

    有类列表的好处是,您可以在其中处理数据(验证等)