Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 1
Регистрация: 18.09.2017
Сообщений: 153

Использование метода addAll

17.09.2019, 01:16. Показов 2414. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не получается вставит элементы коллекции. В задачи нужно перемешать элементы коллекции начиная с определенного
Создаю коллекцию случайных чисел :
Java
1
2
3
4
5
6
7
8
9
10
11
List<Integer> shuffleList = new ArrayList<Integer>();
        // Заполняем случайными числами
        for (int i=0; i<=20; i++) {
            Random rand = new Random();
            ((List<Integer>)shuffleList).add(rand.nextInt(20));     
        }
 
List<Integer> s =  shuffleList.subList(10, shuffleList.size()); //вырезаю нужное кол-во элементов
        Collections.shuffle(s); //перемешиваю
 
        shuffleList.addAll(10,  s); //пытаюсь положить обратно
Но компилятор ругается на addAll : The method addAll(int, Collection<? extends capture#17-of ? extends Object>) in the type List<capture#17-of ? extends Object> is not applicable for the arguments (int, Collection<capture#19-of ?>)
Приводить к типу (Collection<?>), как предлагал компилятор пробовал: shuffleList.addAll(10, (Collection<?>) s) не помогает, в чем ошибка?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.09.2019, 01:16
Ответы с готовыми решениями:

Метод addAll ArrayList
Здравствуйте! Есть базовый класс в 4 полями,а так же дочерний класс с 2мя.Я хочу передать несколько объектов базового класса(в каждом...

Использование метода в main
import java.util.HashMap; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashSet; import...

Использование одноименного метода родителя
Хочу переопределить метод equals, но таким образом, чтобы с наследника вызывался метод equals родительского класса. Это, конечно, бред, но...

16
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.09.2019, 01:26
Чё такое 10?
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
17.09.2019, 06:02
Компилятор как бэ намекает, что нет в List метода addAll(int, Collection<?>), есть только addAll(Collection<?>), смекай.
0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
17.09.2019, 09:49
SergTN, гля, что в кладовке нашлось. можно указывать какую часть листа (от ноля) перемешивать.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Helper {
 
    public static void main(String[] args) {
        int listCapacity = 24;
        List<Integer> shuffleList = new ArrayList<>(listCapacity);
        for (int i = 0; i < listCapacity; i++) {
            shuffleList.add(i);
        }
        System.out.println(shuffleList);
        shuffledPartList(shuffleList, listCapacity/2);
        System.out.println(shuffleList);
    }
 
    private static <T> void shuffledPartList(List<T> listForShuffle, int border) {
        T elemList;
        Random randomGen = new Random(System.currentTimeMillis());
        int indexChange = border - 1;
        for (int i = 0; i < border; i++) {
            while (i == indexChange) {
                indexChange = randomGen.nextInt(border);
            }
            elemList = listForShuffle.get(indexChange);
            listForShuffle.set(indexChange, listForShuffle.get(i));
            listForShuffle.set(i, elemList);
        }
    }
}
результат работы
Кликните здесь для просмотра всего текста

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
[7, 11, 1, 2, 3, 4, 5, 0, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
0
1 / 1 / 1
Регистрация: 18.09.2017
Сообщений: 153
17.09.2019, 13:42  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
можно указывать какую часть листа (от ноля) перемешивать.
мне -то надо не от нуля а от определенного элемента коллекции и до конца

Добавлено через 2 минуты
Цитата Сообщение от _ViPeR_ Посмотреть сообщение
Компилятор как бэ намекает, что нет в List метода addAll(int, Collection<?>), есть только addAll(Collection<?>), смекай.
а то что я ее создаю в конструкторе ArrayList<>() - это не помогает?)
Чувствую, что надо что-то от чего-то отнаследовать , но пока еще не могу сообразить)
0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
17.09.2019, 13:51
Цитата Сообщение от SergTN Посмотреть сообщение
определенного элемента коллекции и до конца
я те показал, КАК! будь человеком, включай мозговую активность))
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.09.2019, 14:32
Лучший ответ Сообщение было отмечено SergTN как решение

Решение

SergTN, в общем твой код почти работает на jdk8. Просто надо тебе прочитать, что делает subList. И всякие касты лишние не надо писать
Java
1
2
3
4
5
6
7
8
9
10
        List<Integer> shuffleList = new ArrayList<>();
        for (int i = 0; i <= 20; i++) {
            shuffleList.add(ThreadLocalRandom.current().nextInt(20));
        }
        System.out.println(shuffleList);
 
        List<Integer> s = shuffleList.subList(10, shuffleList.size());
        Collections.shuffle(s);
 
        System.out.println(shuffleList);
[19, 16, 16, 11, 12, 3, 1, 2, 17, 2, 7, 9, 13, 0, 3, 18, 1, 9, 19, 9, 0]
[19, 16, 16, 11, 12, 3, 1, 2, 17, 2, 19, 13, 1, 9, 9, 7, 0, 9, 18, 0, 3]
0
1 / 1 / 1
Регистрация: 18.09.2017
Сообщений: 153
17.09.2019, 20:18  [ТС]
Вроде и без addAll() получилось:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
List<Integer> shuffleList = new ArrayList<Integer>();
        // Заполняем случайными числами
        for (int i=0; i<=20; i++) {
            Random rand = new Random();
            ((List<Integer>)shuffleList).add(rand.nextInt(20));     
        }
shuffleList(shuffleList);
 
public static void shuffleList (List<Integer> shuffleList) {
        // Перемешиваем список с 10-го элемениа (счет от 0)
        int  N = 10;
        Collections.shuffle( shuffleList.subList(N, shuffleList.size()) );  
    }
0
1 / 1 / 1
Регистрация: 18.09.2017
Сообщений: 153
18.09.2019, 13:44  [ТС]
Цитата Сообщение от _ViPeR_ Посмотреть сообщение
Компилятор как бэ намекает, что нет в List метода addAll(int, Collection<?>), есть только addAll(Collection<?>), смекай.
я тогда не совсем понимаю: если addAll это метод в Collection, а List наследует Collection, то как тогда в List нет addAll ? Или я недопонимаю чего-то?)))
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
18.09.2019, 14:44
SergTN, внимательно посмотрите на сигнатуру метода и сравните что вы ему подаете с тем, что надо.
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
18.09.2019, 15:06
Цитата Сообщение от SergTN Посмотреть сообщение
если addAll это метод в Collection, а List наследует Collection, то как тогда в List нет addAll ? Или я недопонимаю чего-то?)))
А кто сказал, что его нет в List?
Вот, то, что в интерфейсе List:
Java
1
boolean addAll(Collection<? extends E> c);
Там нету метода
Java
1
boolean addAll(int i, Collection<? extends E> c);
Может быть так будет понятнее...
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.09.2019, 17:23
_ViPeR_,
https://docs.oracle.com/javase... ollection-
есть, и код нормально запускался, только этот метод тут не нужен
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
18.09.2019, 20:28
Цитата Сообщение от xoraxax Посмотреть сообщение
есть, и код нормально запускался, только этот метод тут не нужен
Точно... Не туда смотрел
Никогда не использовал этот метод, использовал только addAll(Collection<? extends E> c)...
0
1 / 1 / 1
Регистрация: 18.09.2017
Сообщений: 153
18.09.2019, 22:27  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
есть, и код нормально запускался, только этот метод тут не нужен
да, оказалось, что не нуден. Просто не понятно почему "...is not applicable for the arguments" - к какому типу надо приводить аргумент. Вообще меня как только начинающего изучать Джаву, эта типизация приводит в тихий ужас)
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.09.2019, 22:34
Ещё раз повторяю, на jdk8 твой код работал
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
18.09.2019, 23:22
Цитата Сообщение от SergTN Посмотреть сообщение
Вообще меня как только начинающего изучать Джаву, эта типизация приводит в тихий ужас
а на чём до этого писал?

Почитай эту книгу. Лучше оригинал, т.к. перевод не полностью заклнчен, но, так понимаю, с английским у тебя всё плохо.
1
1 / 1 / 1
Регистрация: 18.09.2017
Сообщений: 153
19.09.2019, 22:29  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
а на чём до этого писал?
JS, PHP
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2019, 22:29
Помогаю со студенческими работами здесь

Про использование метода service()
Пишу на JBuilder3, при создании сервлета и использовании метода service() создается SHTML-файл. Если использовать методы doPost и др., то...

Использование родительского метода с дочерним параметром
Добрый день. Есть 2 класса: родительский и дочерний. В родительском классе обьявлен метод который принимает родительский тип, и возвращает...

Использование метода одного класса в другом
Вопрос вот в чем. Как в классе useEmployee использовать метод описанный в классе Employee? При запуске программы, компилятор никаких ошибок...

Использование переменной из одного метода в другой
Здравствуйте! Я начал писать программу для изучения методов. Я столкнулся с такой проблемой: в другом методе пишет, что переменная 'z'...

Использование функции(метода) другого класса!
Всем доброго времени суток! Изучаю я Java по книжке (Сьерра К, Бейтс Б.) и вот на странице &quot;67&quot; я наткнулся на такой пример: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru