сохранить значения из текстового файла в карту - PullRequest
1 голос
/ 18 апреля 2011

Как мне прочитать строки из текстового файла и сохранить в hashmap? Файл содержит две колонки.

Файл похож на:

Имя Фамилия
Праная Суяш и так далее ...

Ответы [ 3 ]

5 голосов
/ 18 апреля 2011

Вот один из способов:

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] и выполнять ваши манипуляции со строками по мере необходимости, либо, если вам удобны регулярные выражения, вы можете использовать Pattern / Matcher сопоставить линию с шаблоном и получить содержимое из групп захвата.

1 голос
/ 18 апреля 2011

На всякий случай

  • ваши ключи (первый столбец) не содержат пробелы и
  • ваши столбцы разделены либо :, = или белым символом (кроме новой строки)

тогда это может сработать:

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..
1 голос
/ 18 апреля 2011

В хэш-карте, если вы хотите отобразить каждую строку в двух столбцах, вы можете указать значение первого столбца в качестве ключа и второй столбец в качестве значения.Но ключи должны быть уникальными в Hashmap.Если значения первого столбца являются уникальными, вы можете перейти к следующему подходу

Map<String,String> map = new HashMap<String,String>();
map.put(firstColVal,secondColVal);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...