Почему подчеркивает параметр передаваемый в метод removeAllNumbersMoreThan10?
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.*;
public class DeletMoreThan10 {
/* Удалить все числа больше 10
Создать множество чисел(Set<Integer>), занести туда 20 различных чисел.
Удалить из множества все числа больше 10.
*/
public static void main(String[] args) {
Set<Integer> beginset = new HashSet<>();
for (int i=0; i<10; i++) {
beginset.add((int)(Math.random()*100));
}
for (Integer i : beginset) {
System.out.println(i);
}
Set<Integer> endset = new HashSet<>();
endset = removeAllNumbersMoreThan10(beginset);
for (Integer i : endnset) {
System.out.println(i);
}
}
public static HashSet<Integer> removeAllNumbersMoreThan10(HashSet<Integer> set)
{
Iterator<Integer> iterator = set.iterator();
while ( iterator.hasNext())
{
Integer number = iterator.next();
if (number > 10)
iterator.remove();
}
return (HashSet)set;
}
Почему подчеркивает параметр передаваемый в метод removeAllNumbersMoreThan10?
Потому что метод принимает HashSet, а вы передаете Set. Правильно - изменить тип аргумента метода на интерфейс - его логика никак не зависит от конкретной реализации Set-а.
Set<Integer> endset = new HashSet<>();
endset = removeAllNumbersMoreThan10(beginset);
Метод removeAllNumbersMoreThan10 удаляет элементы из первоначального Set-a и поэтому endset и beginset - это один и тот же объект. Поэтому вы можете сделать void removeAllNumbersMoreThan10 и работать после удаления с beginset, т.е.:
for (Integer i : beginset) {
System.out.println(i);
}
removeAllNumbersMoreThan10(beginset);
for (Integer i : beginset) {
System.out.println(i);
}
PS: при использовании Java 8 удаление можно сделать в одну строку:
beginset.removeIf(value -> value > 10);
а вывод в консоль:
beginset.forEach(System.out::println);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости