Выбор слов из массива без повторений

Вытягиваю из массива рандомно слово (в оригинале > 100 слов (находятся в отдельном .txt)), надо что бы каждый раз слово было новое, без повторений. Перепробовал разнообразные варианты, но ни как не выходит создать нормальный рабочий код.

 String RandomWord;
    ArrayList<String> BufList = new ArrayList<String>();

    public void GenerateWord(){
        String[] stringArr = new String[]{"Человек", "Коза", "Стена", "Окно", "Пельмень"};
        int oneLength = stringArr.length;
        int rand1 = (int) (Math.random() * oneLength);
        this.RandomWord = stringArr[rand1];
    }

    public void test() {
        GenerateWord();
        BufList.add(RandomWord);
        if (BufList.contains(RandomWord)){
            GenerateWord();
        } else{
            System.out.println(RandomWord);
        }
        System.out.println(String.valueOf(BufList));
    }

}

Ответы (1 шт):

Автор решения: Спицко Дмитрий

Воспользуйтесь мапой, она возьмет себя проверку повторяющихся слов

HashMap<String, Integer> map = new HashMap<> ();
while (map.size () < 100){
   map.put (getRandomWord(), 1)
}
String[] res = map.keySet ().toArray (new String[0]);
→ Ссылка