Почему подчеркивает параметр передаваемый в метод 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);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Мне нужно считать весь текст из файла в javaЯ знаю, как можно считывать текст построчно, знаю, как считать байты в массив
Имеется объект с большим количество полей типа байт и массив байт, как можно с наиболее меньшим объемом кода сохранить только сами значения...
Представим, что есть коллекция целочисельных значенийНапример, 1 5 8 3 0 15 7