java 文件读取并将其存储在哈希图中

java file reading and storing it in a hashmap

我试图读取一个 .txt 文件并想将其存储在 hasmap(String, List) 中。但是当它试图存储值时,这些值被最后一个值覆盖了。

    String filePath = "D:/liwc_new.txt";
    HashMap<String,List<String>> map = new HashMap<String,List<String>>();

    String line;

    BufferedReader reader = new BufferedReader(new FileReader(filePath));
    String key = null;
    List<String> value = new ArrayList<String>();

    //putting words in key and cat strings in value of  map
    int count = 0;
    String cats[]= null;
    value.clear();
    while ((line = reader.readLine()) != null)
    {
        String[] parts = line.split(":", 2);
        value.clear();
        count++;
        key = parts[0].trim();
        cats=parts[1].split(", ");

        for(int i=0;i<cats.length;i++) {
            cats[i]=cats[i].trim();
            cats[i]=cats[i].replace("[", "");
            cats[i]=cats[i].replace("]", "");
            value.add(cats[i]);
        }

        map.put(key, value);

        //map.put(key, value);
    } 

删除第二次出现的

value.clear();

List<String> value = new ArrayList<String>(); 应移至 while 循环的第一行,并删除对 clear 的两个调用。

它们被覆盖的原因是您只分配一个列表并将其放入映射的 k:v 对的每个值中。因此,对于每个类别,您都有相同的列表,并且每次读取新行时都会清除并重建该列表的内容。所以每个值都将包含在最后一个 clear.

之后添加的内容

另一方面,如果您在每次迭代时创建一个新列表,每个类别都会有它自己的列表,您想要什么。