package com.github.vedenin.rus.collections.multimap;

import com.google.common.collect.Multimap;
import com.google.common.collect.TreeMultimap;

import java.util.Arrays;
import java.util.List;

//  Attention: version with english comments in "eng" package
public class GuavaTreeMultimapTest {

    // Задача вывести разобрать текст и вывести все индексы для каждого слова
    public static void main(String[] args) {
        String INPUT_TEXT = "Hello World! Hello All! Hi World!";
        // Разберем текст на слова и индексы
        List<String> words = Arrays.asList(INPUT_TEXT.split(" "));
        // Создаем Multimap
        Multimap<String, Integer> multiMap = TreeMultimap.create();

        // Заполним Multimap
        int i = 0;
        for(String word: words) {
            multiMap.put(word, i);
            i++;
        }

        // Выводим все вхождения слов в текст
        System.out.println(multiMap); // напечатает {Hello=[0, 2], World!=[1, 5], All!=[3], Hi=[4]}-в натуральном порядке
        // Выводим все уникальные слова
        System.out.println(multiMap.keySet());    // напечатает [Hello, World!, All!, Hi]- в натуральном порядке

        // Выводим все индексы вхождения слова в текст
        System.out.println("Hello = " + multiMap.get("Hello"));    // напечатает [0, 2]
        System.out.println("World = " + multiMap.get("World!"));    // напечатает [1, 5]
        System.out.println("All = " + multiMap.get("All!"));    // напечатает [3]
        System.out.println("Hi = " + multiMap.get("Hi"));    // напечатает [4]
        System.out.println("Empty = " + multiMap.get("Empty"));    // напечатает []

        // Выводим общее количества всех слов в тексте
        System.out.println(multiMap.size());    //напечатает 6

        // Выводим общее количество всех уникальных слов
        System.out.println(multiMap.keySet().size());    //напечатает 4
    }
}