我有一个这种形式的txt文件: 1 01/01/2018 01:00 1915 8,4
1 01/01/2018 02:00 2111 8,8在阅读文件后,我想将其存储到具有以下结构的Map中: <"Key1",1> <"Key2",01/01/2018 01:00> <"Key3",1915> <"Key4",8,4>这是导入代码 BufferedReader buf = new BufferedReader(new
FileReader("test.txt"));
ArrayList<String> words = new ArrayList<>();
String lineJustFetched = null;
String[] wordsArray;
Map<String,String> map = new HashMap<>();
while(true){
lineJustFetched = buf.readLine();
if(lineJustFetched == null) {
break;
} else {
wordsArray = lineJustFetched.split("\t");
for(String each : wordsArray){
words.add(each);
// System.out.println(words.toString());
map.put("Key1",each);
System.out.println(map.toString());
}
}
}
buf.close();我不知道该把什么放到地图中以获得这种结构的问题 <"Key1",1> <"Key2",01/01/2018 01:00>...
4 回答

白衣染霜花
TA贡献1796条经验 获得超10个赞
使用for
与索引
for(int i = 0 ; i < wordsArray.length ; i++) { map.put("Key"+(i+1), wordsArray[i]);}
编辑
在注释之后,您可以设置一个包含字段名称的数组并使用它
String[] fieldNames = {"id", "date", "whatever"};for(int i = 0 ; i < wordsArray.length ; i++) { map.put(fieldNames[i], wordsArray[i]);}

翻阅古今
TA贡献1780条经验 获得超5个赞
split像这样将结果放入地图中,分配键:
wordsArray = lineJustFetched.split("\t");
map.put("Key1", wordsArray[0]);
map.put("Key2", wordsArray[1]);
map.put("Key3", wordsArray[2]);
map.put("Key4", wordsArray[3]);

慕妹3242003
TA贡献1824条经验 获得超6个赞
好吧,首先你的错误是你已经硬编码Key1
为你的Hashmap的关键,你应该改变它。
但是你为什么不使用OOP方式呢?在您正在阅读的行中创建数据的对象并将其添加到列表或其他内容中,这样您也可以为“Keys”创建有意义的名称,而不仅仅是“Key1”,“Key2”,......
添加回答
举报
0/150
提交
取消