Появилась необходимость создать 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());
}
}
Дело в HashSet. Если попадаются одинаковые елементы, то он его не добавляет. Просто замените его на List, или добавьте скажем print где нибудь, вы это увидите.
Для того, чтобы оно работало вам нужно сделать так:
int counter = 0;
while (counter < 20) {
double random = Math.random() * a;
if (integerHashSet.add((int) random)) {
counter++;
};
}
Могу предложить такое решение:
private static Set<Integer> getRandomSet(int count) {
return new Random()
.ints(0, 20)
.distinct()
.limit(count)
.boxed()
.collect(Collectors.toSet());
}
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте! Я нажимаю на конпку, хочу что бы цвет заднего фона одного элемента, был присвоин другому элементуРаньше я делал так
Моя проблема следующая: Я создал проект(мини-игру) в IntelijIdeaПри компиляции в IntelijIdea всё работает(фон и картинки видны), но при попытки создать...