Использование карт в C ++ и в Java - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь отработать свои навыки java, используя мои старые коды C ++ и пытаясь преобразовать их. Итак, у меня есть этот код ниже, который использует std :: map (как показано ниже):

#include <map>
#include <iostream>
#include <fstream>
using namespace std;
int main (int argc, char ** argv)
{
    string ifile = argv[1];
    ifstream icookie {ifile};
    ofstream ocookie {"ocookie.txt",ios::out};
    string Lines;
    map<string,int>CookieMap;
    while(getline(icookie,Lines))
    {
        CookieMap[Lines]++;
    }

    for (auto it : CookieMap)
    {
        cout << it.first << " " << it.second << endl;
    }
    return 0;
}

Код читает файл ocook ie .txt, который содержит:

chocolate
snickerdoodle
vanilla
chocolate
vanilla
sugar
vanilla

Вывод должен быть таким:

chocolate 2
snickerdoodle 1
vanilla 3
sugar 1

Я просто запутался в том, как сделать std :: map, как это в java, потому что я не уверен, сколько будет строк. Спасибо и любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Пример с JDK8 +:

    BufferedReader reader = new BufferedReader(new FileReader("ocookie.txt"));

    Map<String, Integer> result = new HashMap<>();
    String line;
    while((line = reader.readLine()) != null) {
        result.compute(line, (k, v) -> {
            if (v == null) {
                return 1;
            } else {
                return v + 1;
            }
        });
    }

    result.forEach( (k, v) -> {
        System.out.printf("%s %s\n", k, v);
    });
0 голосов
/ 25 апреля 2020

Вы должны проверить , как читать файл в java. Затем вы можете использовать HashMap Class для получения такого поведения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...