Вложенная хеш-карта с хеш-картой - PullRequest
0 голосов
/ 03 мая 2018
public class HashMapsTest {

    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) throws FileNotFoundException {
        sc = new Scanner(new FileInputStream("TextFile")); // read a file 
        ArrayList<ArrayList<String>> words = new ArrayList<ArrayList<String>>(); // list to put the words inside 
        StringBuffer sb = new StringBuffer(); // string buffer to read the file 
        String[] protasi = null;
        while (sc.hasNextLine()) {
            sb.append(sc.nextLine() + " ");
        }
        protasi = sb.toString()
                    .split("!| !|! | ! |\\? | \\?| \\? |\\?|\\.|\\. | \\.| \\."); // split the string into sentences
        String[][] leksis = new String[protasi.length][];
        for (int i = 0; i < protasi.length; i++) {
            leksis[i] = protasi[i].split(" , |,| ,| ,| - |-| -|- | -- |--| --|-- | : |:| :|: | ; |;| ;|; | |    | ' |'|"
                                             + " '|' | \" |\"| \" | \"| ` |`| `|` "); // split the sentences into words
        }

        // take the table with the words and put it into a list 
        for (int i = 0; i < protasi.length; i++) {
            String x = "";
            ArrayList<String> line = new ArrayList<String>();
            for (int j = 0; j < leksis[i].length; j++) {
                x = leksis[i][j];
                if (x.length() != 0) {
                    line.add(x);
                }
            }
            if (line.size() != 0) {
                words.add(line);
            }
        }

        HashMap<String, HashMap<String, Integer>> outhm = new HashMap<String, HashMap<String, Integer>>();
        HashMap<String, Integer> inhm = new HashMap<String, Integer>();

        for (int i = 0; i < words.size(); i++) {
            for (int j = 0; j < words.get(i).size(); j++) {
                if (!inhm.containsKey(words.get(i).get(j))) {
                    inhm.put(words.get(i).get(j), 1);
                } else {
                    inhm.put(words.get(i).get(j), inhm.get(words.get(i).get(j)) + 1);
                }
                if (!outhm.containsKey(words.get(i).get(j))) {
                    outhm.put(words.get(i).get(j), inhm);
                } else {
                    outhm.put(words.get(i).get(j), inhm);
                }
            }
        }

        System.out.println(outhm.toString());
    }

}

Я хочу создать хэш-карту, которая возвращает этот вывод:

{’man’: {’i’: 3, ’am’: 3, ’a’: 2, ’больной’: 1, ’злобный’: 1, ’a’: 1, ’Непривлекательный’: 1}, ’liver’: {’i’: 1, ’believe’: 1, ’my’: 1, ’is’: 1, ’Больной’: 1}, ...}

Вместо этого вывода я получаю:

{ails = {ails = 1, about = 1, для = 1, I = 5, больной = 1, верить = 1, делать = 1, не = 1, и = 1, я = 1, непривлекательный = 1, человек = 3, злобный = 1, все = 1, а = 2, болезнь = 1, печень = 1, ничего = 1, однако = 1, есть = 1, am = 3, my = 2, an = 1, at = 1, что = 1, больной = 1, знаю = 2, уверен = 1}, о = {ails = 1, о = 1, для = 1, I = 5, больной = 1, верить = 1, делать = 1, а не = 1 и = 1, мне = 1, непривлекательно = 1, человек = 3, злобный = 1, все = 1, а = 2, болезнь = 1, печень = 1, ничего = 1, однако = 1, is = 1, am = 3, my = 2, an = 1, at = 1, what = 1, больной = 1, знать = 2, определенная = 1} ...}

ввод следующий: введите описание изображения здесь

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