如何从文本文件中读取字符串并存储在hashmap中? 文件包含两列。
文件就像:
FirstName LastName
Pranay Suyash等等......
答案 0 :(得分:5)
这是一种方式:
import java.io.*;
import java.util.*;
class Test {
public static void main(String[] args) throws FileNotFoundException {
Scanner scanner = new Scanner(new FileReader("filename.txt"));
HashMap<String, String> map = new HashMap<String, String>();
while (scanner.hasNextLine()) {
String[] columns = scanner.nextLine().split(" ");
map.put(columns[0], columns[1]);
}
System.out.println(map);
}
}
给定输入:
somekey somevalue
someotherkey someothervalue
打印
{someotherkey=someothervalue, somekey=somevalue}
如果您的线条看起来不同,我建议您抓取columns[0]
和columns[1]
并根据需要进行字符串操作,或者,如果您对正则表达式感到满意,则可以使用{{1 } / Pattern
将线与模式匹配,并从捕获组中获取内容。
答案 1 :(得分:1)
在哈希映射中,如果要映射两列中的每一行,可以将第一列值作为键,将第二列作为值。但是密钥在Hashmap中应该是唯一的。如果第一列值是唯一的,您可以采用以下方法
Map<String,String> map = new HashMap<String,String>();
map.put(firstColVal,secondColVal);
答案 2 :(得分:1)
以防万一
:
,=
或白色字符(换行符除外)分隔然后这可能有效:
Map<Object, Object> map = new Properties();
((Properties) map).load(new FileReader("inputfile.txt"));
刚看到您的示例输入...您不应该将 数据放在地图中,除非确保所有第一个名称都是唯一的。
否则会发生这种情况:
map.put("Homer", "Simpson"); // new key/value pair
map.put("Bart", "Simpson"); // new key/value pair
map.put("Homer", "Johnsson"); // value for "Homer" is replaced with "Johnsson"
System.out.println(map.get("Homer")); // guess what happens..