vitya_brodov
@vitya_brodov
Java dev

Как создать два списка с уникальными числами?

Здравствуйте!
мне надо сделать: Создать 2 списка из 10 элементов от 1 до 100. Проверить с какой попытки у вас получится создать списки с уникальными значениями. как правильно это реализовать?
что я делаю:
List<Integer> list1;
List<Integer> list2;
public void createList(){
    int chance = 0;
    while (!Collections.disjoint(list1, list2)){
        List<Integer> list1 = Collections.nCopies(10, rand.nextInt(100));
        List<Integer> list2 = Collections.nCopies(10, rand.nextInt(100));
        chance++;
    }
    list1.forEach(System.out::println);
    list2.forEach(System.out::println);
    System.out.println(chance);
}
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Ты почти всё сделал правильно за исключением того, что Collections.nCopies(10, rand.nextInt(100)); просто выбирает одно случайное число, и делает список из 10 повторений этого числа. Вангую, что у тебя сразу с первой попытки в результате получаются списки из разных элементов(например, [17,17,17,17,17,17,17,17,17,17] и [73,73,73,73,73,73,73,73,73]).
Нужно в цикле заполнять список, каждый раз вызывая nextInt(100). Или воспользоваться Stream API и написать нечто вроде
IntStream.range(0, 10).map(i -> rand.nextInt(100)).collect(Collectors.toList());
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
xez
@xez Куратор тега Java
TL Junior Roo
1. Сделайте список из 100 элементов (1, 2, 3 ... 100).
2. Выбирайте рандомно из этого списка, удаляя выбранные элементы.
Получится с первого раза.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы