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
.
之后添加的内容
另一方面,如果您在每次迭代时创建一个新列表,每个类别都会有它自己的列表,您想要什么。
我试图读取一个 .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
.
另一方面,如果您在每次迭代时创建一个新列表,每个类别都会有它自己的列表,您想要什么。