/ Удалить все числа больше 10 Создать множество чисел(Set<integer>), занести туда 20 различных чисел. Удалить из множества все числа больше 10. /

public class Solution { public static HashSet<integer> createSet() { Set<integer> set = new HashSet<integer>();

    for (int i = 0; i < 20; i++)
    {

        set.add(i );

     }

    return (HashSet<Integer>) set;

    public static HashSet<Integer> removeAllNumbersMoreThan10 (HashSet < Integer > set)
    {
        Iterator<Integer> iterator = set.iterator();

        while (iterator.hasNext())
        {

            if (iterator.next() > 10) iterator.remove();

        }
        return (HashSet<Integer>) set;

    }
}

}

задан 11 Янв, 14:38

jlmaikl's gravatar image

jlmaikl
11
одобрено: 0%

тэги отредактированы 11 Янв, 15:27

Tars's gravatar image

Tars
1.7k9


iterator.remove() - это неправильно. Почитайте, как удалять из сета через итератор.

ссылка

опубликован 11 Янв, 14:47

Tars's gravatar image

Tars
1.7k9
одобрено: 62%

Одна есть! Спасибо! Компиляцию проходит, тестирование нет. Оставлю пока. Позже вернусь.

(12 Янв, 11:58) jlmaikl

После первого return нет закрывающей скобки. И в конце, соответственно, одна лишняя.

(12 Янв, 07:18) Tars

<integer> - по всей видимости так работает окно сообщений. В коде, конечно, с большой буквы. iterator.remove() - такой способ тоже нашел. А ошибки хоть убейте, не вижу((

(12 Янв, 05:52) jlmaikl

Да, чего-то я вчера перегрелся :D В голове отложилось что-то, что удалять надо через set.remove(). Значит, только в типе ошибка.

(12 Янв, 00:29) Tars

Когда это удаление через iterator.remove() стало неправильным. Вполне рабочий код.

    public static HashSet<integer> removeAllNumbersMoreThan10(HashSet<integer> set)
    {
        Iterator<integer> iterator = set.iterator();
        while (iterator.hasNext())
        {
            if (iterator.next()>10) iterator.remove();
        }
        return set;
    }
(11 Янв, 21:28) newuser01

В задании Integer с большой буквы наверняка. А у вас с маленькой, это ошибка.

(11 Янв, 15:11) Tars

Ок. Нашел такой вариант: set.remove(set.iterator().next()); но компилятор ругается на: public static HashSet<integer> removeAllNumbersMoreThan10 (HashSet < Integer > set). Но это же данная заданием строка. Не понимаю.

(11 Янв, 15:10) jlmaikl

А для чего в return приведение к (HashSet<integer>) ? Не встречала ранее такого просто. Объясните, пожалуйста

ссылка

опубликован 11 Янв, 14:49

multiKat's gravatar image

multiKat
1024
одобрено: 36%

благодарю :)

(11 Янв, 14:57) multiKat
1

Это если создаешь Set<t> set, а тип возвращаемого элемента/принимаемого аргумента HashSet<t>, то надо привести тип к HashSet<t>

У него во втором методе это избыточно.

(11 Янв, 14:52) Haart
Ваш ответ
включить просмотр

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×3,707
×1

Задан: 11 Янв, 14:38

Просмотров: 183 раз

Отредактирован: 12 Янв, 11:58