将文件读入HashMap

时间:2015-02-27 02:00:32

标签: java hashmap readfile

我正在阅读该城市及其人口的文件。

文件如下所示:

纽约市

NY 8,175,133

洛杉矶市

CA 3,792,621

............

原始文件的格式不同,但我无法修改我的代码以正确阅读。原始文件如下所示:

纽约市纽约8,175,133

洛杉矶市CA 3,792,621

...........

我发布了适用于第一个版本的代码(如下),但是如何使其适用于原始格式?我正在努力让这座城市成为我的关键,以及国家和城市。人口作为价值。 我知道这很简单,但我无法弄清楚它是什么。

public static void main(String[] args) throws FileNotFoundException
{
    File file = new File("test.txt");
    Scanner reader = new Scanner(file);
    HashMap<String, String> data = new HashMap<String, String>();
    while (reader.hasNext())
    {
        String city = reader.nextLine();
        String state_pop = reader.nextLine();
        data.put(city, state_pop);
    }
    Iterator<String> keySetIterator = data.keySet().iterator();
    while (keySetIterator.hasNext())
    {
        String key = keySetIterator.next();
        System.out.println(key + "" + data.get(key));
    }
}

谢谢。

2 个答案:

答案 0 :(得分:2)

只需用以下内容替换您调用readLine的代码:

String line = scannner.readLine();
int space = line.lastIndexOf(' ', line.lastIndexOf(' ') - 1);
String city = line.substring(0,space);
String statepop = line.substring(space+1);

然后将您的citystatepop放入地图。

基本上,此代码会找到倒数第二个空格并将String拆分为<。<}。

答案 1 :(得分:1)

也许是这样的:

while (reader.hasNext())
{
    String line = reader.nextLine();
    int splitIndex = line.lastIndexOf(" city ");            

    data.put(line.substring(0, splitIndex + 5), line.substring(splitIndex + 6));
}