将值从文本文件存储到地图中

时间:2011-04-18 10:54:11

标签: java hashmap

如何从文本文件中读取字符串并存储在hashmap中? 文件包含两列。

文件就像:

FirstName LastName
Pranay Suyash等等......

3 个答案:

答案 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..