Создание коллекции из 20 случайных чисел

115
29 марта 2018, 08:40

Появилась необходимость создать HashSet коллекцию с 20 числами от 0 до 20. При создании с помощью кода, написанного ниже, каждый раз создаётся коллекция со случайным количеством элементов из случайных чисел. Подскажите, пожалуйста, почему так? Ведь в цикле указанно создание 20 элементов.

package level8;
import java.util.*;
public class task182_lev8_lec08 {
    public static HashSet<Integer> createSet() {
        int a = 20;
        HashSet<Integer> integerHashSet = new HashSet<>();
        for (int i = 0; i < 20; i++){
            double random = Math.random() * a;
            integerHashSet.add((int) random);
        }
        return integerHashSet;
    }
    public static void main(String[] args) {
        System.out.println(createSet());
    }
}
Answer 1

Дело в HashSet. Если попадаются одинаковые елементы, то он его не добавляет. Просто замените его на List, или добавьте скажем print где нибудь, вы это увидите.

Для того, чтобы оно работало вам нужно сделать так:

int counter = 0;
while (counter < 20) {
    double random = Math.random() * a;
    if (integerHashSet.add((int) random)) {
        counter++;
    };
}
Answer 2

Могу предложить такое решение:

private static Set<Integer> getRandomSet(int count) {
    return new Random()
            .ints(0, 20)
            .distinct()
            .limit(count)
            .boxed()
            .collect(Collectors.toSet());
}
READ ALSO
возврат заднего фона элемента

возврат заднего фона элемента

Здравствуйте! Я нажимаю на конпку, хочу что бы цвет заднего фона одного элемента, был присвоин другому элементуРаньше я делал так

127
Проблема при запуске jar

Проблема при запуске jar

Моя проблема следующая: Я создал проект(мини-игру) в IntelijIdeaПри компиляции в IntelijIdea всё работает(фон и картинки видны), но при попытки создать...

116
Работа с данными Arraylist

Работа с данными Arraylist

Здравствуйте, имеются данные в Arraylist в таком формате:

153