Java 将文件读入哈希映射问题

Java 将文件读入哈希映射问题,java,csv,hashmap,Java,Csv,Hashmap,我在尝试将大量数据加载到不同的HashMap时遇到问题。我使用另一个类来处理文件的所有解码和传输到hashMap。我的问题是,我将在一个文件中加载到一个特定的hashMap(比如hashMap x)。但是,当我将不同的数据加载到ex.hasMap y中时,hashMap x会用hashMap y应该具有的所有内容重新编写。后来我发现一些键和值是从不同的文件中传递过来的,但有些被删除了,因为hashMap不允许重复。因此,我对x和y的最终结果是将两个文件中的数据混搭到一个hashMap中。我不知道

我在尝试将大量数据加载到不同的HashMap时遇到问题。我使用另一个类来处理文件的所有解码和传输到hashMap。我的问题是,我将在一个文件中加载到一个特定的hashMap(比如hashMap x)。但是,当我将不同的数据加载到ex.hasMap y中时,hashMap x会用hashMap y应该具有的所有内容重新编写。后来我发现一些键和值是从不同的文件中传递过来的,但有些被删除了,因为hashMap不允许重复。因此,我对x和y的最终结果是将两个文件中的数据混搭到一个hashMap中。我不知道如何解决这个问题

以下是我到目前为止的情况:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class CodeFileProcessor {

    private static Map<String, String> codeMap = new HashMap<String, String>();

    public static Map<String, String> readCodeFile(String fileName) throws  IOException {
        codeMap.clear();
        BufferedReader br = new BufferedReader(new FileReader(fileName));
        String nextLine = br.readLine();
        while(nextLine != null) {
            String[] parts = nextLine.split(",");
            codeMap.put(parts[0], parts[1]);
            nextLine = br.readLine();
        }
    br.close();
    return codeMap;
    }
}
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.HashMap;
导入java.util.Map;
公共类代码文件处理器{
私有静态映射codeMap=newhashmap();
公共静态映射readCodeFile(字符串文件名)引发IOException{
clear();
BufferedReader br=新的BufferedReader(新文件读取器(文件名));
字符串nextLine=br.readLine();
while(nextLine!=null){
String[]parts=nextLine.split(“,”);
代码映射.put(部分[0],部分[1]);
nextLine=br.readLine();
}
br.close();
返回码图;
}
}

您的问题看起来像是静态的代码映射。你基本上是在反复使用同一张地图,这就是为什么事情看起来像是被覆盖了

尝试在方法调用中创建新映射:

//DELETE THIS LINE - private static Map<String, String> codeMap = new HashMap<String, String>();

public static Map<String, String> readCodeFile(String fileName) throws  IOException {
    //Create a new map instead of reusing the static (shared) one
    Map<String, String> codeMap = new HashMap<String, String>();
        ...
//删除此行-private static Map codeMap=new HashMap();
公共静态映射readCodeFile(字符串文件名)引发IOException{
//创建新映射,而不是重用静态(共享)映射
Map codeMap=newhashmap();
...

该类下所有内容的可能副本都应该是静态的。我正在按照一位教授的UML进行作业。我确信教授希望您实际学习如何编写Java代码。请研究变量为
静态的
意味着什么。您反复使用相同的哈希映射。如果有问题或关于教授要求的问题那你为什么不问我们而不是问你的教授呢?类内存不同,堆内存不同。维护static关键字有什么用。我遵循一个UML来分配任务。这个类下的所有内容都应该是静态的。除非UML是错误的,否则它应该是静态的在这种情况下,我认为您的UML是错误的。如果您想要静态映射的多个不同实例(从您的描述中映射“x”和“y”),那么就不能有静态映射