Больше 10? Вы нам не подходите

  • 5
  • Недоступна
Перевалочный пункт Оддиозо ищет сотрудников. Единственное условие: количество конечностей у них не должно превышать более десяти конечностей (мы не знаем, откуда взялась такая дискриминация). Поможем им программой, в которой создим множество чисел(Set<Integer>), занесем туда 20 различных чисел, а затем удалить из множества все числа больше 10.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (213)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Koipse9 уровень
понедельник, 11:43
Гениально, блин. Забыть про итератор, запихнуть сэт в аррайлист, после провести операцию по удалению и вновь вернуть аррайлист в сэт. Жалко, что не пропускает, но такое извращение довольно забавно XD
Sergei Azarov13 уровень, Москва
7 сентября, 12:10
Удалять и изменять значения можно только используя итератор. При использовании for возникает ошибка Я об этом забыл.
Larton15 уровень, Киев
11 сентября, 14:20
Не только итератором. Есть и вариант с использованием предикатора и removeif ( в две строчки решение)
Сергей25 уровень, Екатеринбург
17 августа, 06:42
Несмотря на то, что removeAllNumbersGreaterThan10() должен возвращать Set, удалять числа нужно именно из переданного set и возвращать именно его. По-моему так можно было обойтись и без возврата.
Алексей 9 уровень, Санкт-Петербург
9 августа, 07:40
set.removeIf(element -> element > 10);
Shukurbek T11 уровень
20 июня, 17:57
while( set.size()!=20 ) set.add ( random.nextInt() );
BariO14 уровень, Nizhniy Novgorod
23 августа, 16:23
non-static method cannot be referenced from a static context почему так?
Hukiro9 уровень, Иркутск
18 июня, 05:11
Возник вопрос по итератору: Из этой лекции https://javarush.ru/quests/lectures/questsyntax.level08.lecture02 , я думал, что
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
    String text = iterator.next();
эквивалентно записи
for (String text : set)
и что в втором случае не явно создается итератор для перебора, но если мы обратимся к итератору из сокращенной записи:
for (int x : set) {
        if (x>10) iterator.remove();
        }
компилятор будет ругаться на переменную iterator, которую мы не объявили. И собственно вопрос, для удаления в таком случае нужно всегда прописывать полную версию итератора, или есть какая-то хитрость?
Евгений18 уровень, Санкт-Петербург
24 июня, 18:18
Удалять элементы можно только с помощью итератора, foreach здесь будет выдавать ошибку компилятора. Здесь об этом упоминают.
Дмитрий9 уровень, Токио
понедельник, 11:12
Евгений, спасибо. Сломал мозг, пока не прочитал твой коммент
Галков Владислав Евгеньевич14 уровень, Екатеринбург
11 мая, 20:18
Забегая немножечко вперед нашел элегантное решение! set.removeIf (digit -> digit>10);
Rus26 уровень, Астана
27 июня, 11:55
я вставил вместо digit - x и у меня не сработало почему? set.removeIf (x -> x>10); неужели так принципиально вставлять именно digit?
Галков Владислав Евгеньевич14 уровень, Екатеринбург
27 июня, 16:29
Не знаю, не должно быть принципиально, какое название дать.
Justinian41 уровень, Киев
28 июня, 11:25
имя переменной может быть любое, главное чтобы имя уже не было использовано в рамках блока кода. Метод полезный, только уточню, что digit это разряд, односимвольное нумерическое представление, в нашем случае мы работаем с числами - number: set.removeIf(number -> number > 10); или set.removeIf(n -> n > 10);
Александр11 уровень, Москва
8 мая, 08:23
ужас и морока решать через итератор, equals. используйте removeIf.
Volodya16 уровень, Минск
5 мая, 06:36
Замечания, отличные от замечания ниже: 1. В первой части используйте обыкновенный цикл и ничего не мудрите. 2. Удаляйте через итератор (https://javarush.ru/quests/lectures/questsyntax.level08.lecture02) в этой лекции все подробно описано с list <String>. 3. В части main ничего писать не надо, в задании не сказано, да и так проходит. Сложность средняя, в удалении 10 чисел один if добавить, да и все. Надеюсь, был полезен
Volodya16 уровень, Минск
5 мая, 06:36
И еще, тоже думал сделать через рандом. Он тут вообще не нужен.
Wladyslaw26 уровень, Warsaw
17 июня, 13:57
Я через рандом сделал - прошло и так. Там еще проверка в цикле тогда нужна ибо если не уникальное значение - в сет оно не попадет.
Виталий17 уровень
28 апреля, 20:12
Замечания по задаче от того, кто ее таки осилил: 1. В первой части цифры вводите вручную, и не повторяющиеся, через цикл не примет (хотя цикл и не нарушает условия). 2. Удаляйте через итератор. 3. public static void main(String[] args) они забыли написать что сюда нужно прописать вызов функции, в которую передать другую функцию. Вобщем сложность задачи нихрена не средняя ))
Роберт13 уровень, Москва
2 мая, 22:07
У меня прошло без выполнения третьего пункта, но из-за того что цикл не принимает, пришлось потратить время
Kirill Sadovnikov16 уровень, Санкт-Петербург
4 мая, 21:43
1. Random в помощь, компьютеры нужны для автоматизации + while 2. - 3. Вызов функции не нужен, все запускается на сервере с JUnit