Выбор слов из массива без повторений
Вытягиваю из массива рандомно слово (в оригинале > 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]);