Collections 无法合并到地图<;长字符串>;

Collections 无法合并到地图<;长字符串>;,collections,java-8,Collections,Java 8,我试图将多个映射合并成一个映射,为此我编写了这段代码 public static Map<String, Long> mergeMaps(List<Map<String, Long>> maps){ Map<String, Long> mergedMap = new TreeMap<>(); maps.forEach( map -> { //Map<String, Long> mx =

我试图将多个映射合并成一个映射,为此我编写了这段代码

public static Map<String, Long> mergeMaps(List<Map<String, Long>> maps){
    Map<String, Long> mergedMap = new TreeMap<>();
    maps.forEach( map -> {
        //Map<String, Long> mx = new TreeMap<>(map);
        map.forEach((key, value) -> mergedMap.merge(key, value, Long::sum));
    });
    logger.info("Merge map successful");
    return mergedMap;
}
我有这个pojo

公共类映射到{

public MappingDto(){

    map1 = new LinkedHashMap<>();
    map2 = new LinkedHashMap<>();
    map3 = new LinkedHashMap<>();
}

private Map<String, Long> map1;
private Map<String, Long> map2;
private Map<String, Long> map3;

getters()/Setters()
toString()
}
生成此图后,我必须将此图和存储在文件中的一些图合并,要读取此图,我有以下方法

public static <T> T readJsonFile(String filePath, T t) throws JAXBException, IOException, IllegalAccessException, InstantiationException {
    ObjectMapper mapper = new ObjectMapper();
    if(!Utils.checkIfFileExists(filePath)){
        Utils.createANewFile(filePath);
        return t;
    }
    return mapper.readValue(new File(filePath), new TypeReference<T>(){});
}

List dataList=newlinkedlist();
add(MappingDto.getMap1());
add(MappingDto.getMap2());
add(MappingDto.getMap3());
合并地图(数据列表);
我多次查看了这段代码,但无法确定到底是什么导致了这个问题

一个是读取存储的JSON映射

public static <T> T readJsonFile(String filePath, Class<T> t) throws JAXBException, IOException, IllegalAccessException, InstantiationException {
    ObjectMapper mapper = new ObjectMapper();
    if(!Utils.checkIfFileExists(filePath)){
        Utils.createANewFile(filePath);
        return t.newInstance();
    }
    return mapper.readValue(new File(filePath), new TypeReference<T>(){});
}
publicstatict readJsonFile(字符串文件路径,类T)抛出jaxbeexception、IOException、IllegalAccessException、InstantiationException{
ObjectMapper mapper=新的ObjectMapper();
如果(!Utils.checkIfFileExists(filePath)){
Utils.createANewFile(文件路径);
返回t.newInstance();
}
返回mapper.readValue(新文件(filePath),新类型引用(){});
}
我尝试了这个和其他几个变体,但没有结果

public static Map<String, Long> mergeMaps(List<Map<String, Long>> maps){
    Map<String, Long> mergedMap = new TreeMap<>();
    maps.forEach( map -> {
        //Map<String, Long> mx = new TreeMap<>(map);
        map.forEach((key, value) -> mergedMap.merge(key, Long.valueOf(value), Long::sum));
    });
    logger.info("Merge map successful");
    return mergedMap;
}
公共静态地图合并地图(列表地图){
Map mergedMap=newtreemap();
maps.forEach(地图->{
//Map mx=新树映射(Map);
map.forEach((key,value)->mergedMap.merge(key,Long.valueOf(value),Long::sum));
});
logger.info(“合并映射成功”);
返回合并地图;
}
你能帮我理解什么是整数,为什么要转换为长整数吗


提前感谢。

奇怪,这是从哪里来的…它工作得很好。你能告诉我你在哪里调用这个方法以及它是在哪里构建的吗?我可以保证你在里面放了一个
Integer
引用作为一个值…这个bug已经被知道了很可能你的错误发生在
getStoredMap(文件名)中
公共映射调用合并(字符串文件名,映射数据){Map storedData=getStoredMap(文件名);返回mergeMaps(Arrays.asList(data,storedData));}
这里我正在读取一个JSON格式的存储映射并合并当前形成的映射,并且有一个重载方法
public void callMerge(字符串文件名,列表数据)抛出IOException{Map storedData=getStoredMap(文件名);data.add(storedData);返回mergeMaps(数据);}
@Hadi如果你看storedData,它的类型映射是Long类型,这里没有整数引用。为什么在这种情况下寻找整数。奇怪的是,这是从哪里来的…它工作得很好。你能告诉我你在哪里调用这个方法以及它是在哪里构建的吗?我可以保证你把一个
整数
引用作为一个值放在里面…这个bug哈很可能您的错误发生在
getStoredMap(文件名);
publicmap callMerge(字符串文件名,映射数据){Map storedData=getStoredMap(文件名);返回mergeMaps(Arrays.asList(数据,storedData));}
这里我正在读取一个JSON格式的存储映射并合并当前形成的映射,并且有一个重载方法
public void callMerge(字符串文件名,列表数据)抛出IOException{map storedData=getStoredMap(文件名);data.add(storedData);return mergeMaps(数据);}
@Hadi如果你看一下storedData,它的类型Map是Long,这里没有整数引用。在这种情况下为什么要找整数呢。
mergeMaps(Arrays.asList(MappingDto.getMap1(),storedData));
List<Map<String, Long>> dataList = new LinkedList<>();
dataList.add(MappingDto.getMap1());
dataList.add(MappingDto.getMap2());
dataList.add(MappingDto.getMap3());
mergeMaps(dataList);
public static <T> T readJsonFile(String filePath, Class<T> t) throws JAXBException, IOException, IllegalAccessException, InstantiationException {
    ObjectMapper mapper = new ObjectMapper();
    if(!Utils.checkIfFileExists(filePath)){
        Utils.createANewFile(filePath);
        return t.newInstance();
    }
    return mapper.readValue(new File(filePath), new TypeReference<T>(){});
}
public static Map<String, Long> mergeMaps(List<Map<String, Long>> maps){
    Map<String, Long> mergedMap = new TreeMap<>();
    maps.forEach( map -> {
        //Map<String, Long> mx = new TreeMap<>(map);
        map.forEach((key, value) -> mergedMap.merge(key, Long.valueOf(value), Long::sum));
    });
    logger.info("Merge map successful");
    return mergedMap;
}