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

  • 10
  • Недоступна
Перевалочный пункт Оддиозо ищет сотрудников. Единственное условие: количество конечностей у них не должно превышать более десяти конечностей (мы не знаем, откуда взялась такая дискриминация). Поможем им программой, в которой создадим множество чисел(Set<Integer>), занесем туда 20 различных чисел, а затем удалить из множества все числа больше 10.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (453)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Alexander Minaev
Уровень 10, Великие Луки, Россия
7 июня, 13:04
да уж, походу я один это сделал методом переноса set в arraylist , где работал с arraylist как мне надо, удалил содержимое set, а затем просто перенес готовый arraylist в set, а затем вернул set😅😅😅😅😅😅😅😅😅😅😅
Павел Соловьёв докер - механизатор в Порт
9 мая, 04:34
это решение не прошло
for (Integer i : set){
            if (i > 10) set.remove(i);
        }
это прошло
Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()){
            if (iterator.next() > 10) iterator.remove();
        }
кто объяснит почему? Почитал комментарии , там обратили внимание на то что проход и изменение по коллекции запрещен , а авторы курса в первом варианте создают копию
Set<Integer> i = new HashSet<>(set);
И все встает на свои места
Edward Northwind
Уровень 20, Мариуполь, Украина
28 апреля, 12:59
Для итератора слишком много писанины в веб-версии, которая работает крайне коряво (авто-подстановка больше мешает, авто-импорта нет), а прыгать в IDEA и искать задачу мне лень, поэтому решаю тут. Короче я просто перегнал Set в массив, перебрал массив в цикле и удалил все значения, что больше заданного по условию.
Евгений N
Уровень 12
10 апреля, 18:46
господа, просьба поправить валидатор на последней проверке "Метод removeAllNumbersGreaterThan10() должен удалять из множества все числа больше 10" не проходит вариант, где я (в отличии от "правильного" решения) бегаю по переданному set, меняю копию и возвращаю измененную копию. не написано же "удалять из переданного множества" ?? 😁
Евгений N
Уровень 12
10 апреля, 17:33
немного не в тему, но как с этим java завоевала мир???
Integer a=221,b=221;
  if (a == b) System.out.println( "a == b");  else System.out.println("a != b");
  if (a >= b) System.out.println( "a >= b");
a != b a >= b видимо у создателей java были проблемы с математикой, ведь согласно Математике:
a <> b AND a>=b   =>  a > b
a > b, Карл !!!
1 июня, 20:35
Потому что вы сравниваете не примитивы, а объекты. И 2 разных объекта надо сравнивать по значению через equals. А то, что сравниваете вы - это ссылки на объекты и они не равны.
Евгений N
Уровень 12
17 июня, 12:21
a >= b сравнивает значения? а а==b ссылки? стройность хромает.
Alexey Korshikov
Уровень 11
8 апреля, 18:05
Что блин не так то? public static Set<Integer> removeAllNumbersGreaterThan10(Set<Integer> set) { // напишите тут ваш кококод Set<Integer> set2 = new HashSet<Integer>(); for (Integer n:set) if(n<=10) set2.add(n); return set2; } Афтары, вы с дуба рухнули? По-вашему, скопировать множество целиком, а потом удалять из копии элементы по одному - это эффективнее, чем создать новое множество? В ТЗ вообще есть хоть слово про эффективность? Если нет, почему этот вариант не прокатывает? Я в шоке. Классика жанра. Алгоритм кипячения чайника. Шаг 0. Наполнить чайник водой. Если чайник не пустой, вылить воду и начать с шага 0.
Kairat Tubalykov
Уровень 11
3 апреля, 11:11
Почему создается Set, когда выйти должно HashSet?
public static Set<Integer> createSet() {
Set - это интерфейс, он как бы более абстрактный, чем HashSet, поэтому мы когда пишем
Set<Integer> sett = new HashSet<integer>();
так можно, потому что мы как бы просто выбрали реализацию для sett и конфликта типов нет? Но если мы Hashset приравняем к Set, то конфликт почему-то будет...
Andrey Ganin
Уровень 14, Воронеж
3 февраля, 16:26
Почему никто не пишет что нельзя модифицировать коллекцию одновременно с проходом по этой коллекции любого средства кроме итератора? Т.е. через расширенный фор вылетает ошибка "ConcurrentModificationException "
Алексей Гарькин
Уровень 11, Тольятти, Россия
24 января, 11:52
Здравствуйте. Подскажите пожалуйста. Правильно ли я понимаю, что когда я создаю Итератор Iterator<Integer> iterator1 = set.iterator(); создаётся копия (iterator1) множества set внутри которого происходит перебор элементов.
AndreyEpanchin
Уровень 8, Днепр, Украина
20 января, 22:00
Подскажите, ранее писали, что нельзя редактировать коллекцию во время прохода по циклу for(T n: Tobj){ } А почему тогда в правильном решении этот цикл применен?
Tesla EXV
Уровень 14, Москва, Россия
8 апреля, 09:59
Если внимательно посмотришь на правильное решение, то обратишь внимание, что перебор в цикле происходит по копии множества (copy), а удаляются элементы уже из оригинала (set).
artbunny
Уровень 16, Санкт-Петербург, Россия
8 мая, 10:20
Как верно подмечено. Спасибо, изначально не обратил внимание