Проверить содержится ли в коллекции конкретный тип данных
Допустим есть коллекция, пускай будет Arraylist list и в ней содержатся элементы разных типов. Есть ли возможность проверить содержится ли какой-то конкретный тип в list? Что-то типа contains по типу?
Ответы (2 шт):
Автор решения: Frog
→ Ссылка
Ну можно написать что-то типа такого:
import java.util.ArrayList;
import java.util.function.Consumer;
public class Program {
public static void main(String[] args) {
ArrayList<Object> list = new ArrayList<Object>();
list.add(3);
list.add("hi");
list.add('w');
list.forEach(new Consumer<Object>() {
@Override
public void accept(Object o) {
if (o instanceof Integer) {
System.out.println(o);
}
}
});
}
}
Но, честно говоря, все это смахивает на один большой костыль.
Автор решения: alex
→ Ссылка
public static void main(String[] args) {
List list = new ArrayList();
list.add("ds");
list.add(7);
list.add(true);
System.out.println(containsType(list, String.class)); //true
System.out.println(containsType(list, Long.class)); //false
}
static <T> boolean containsType(List list, Class<T> type) {
for (Object o : list) {
if (type.isInstance(o)) return true;
}
return false;
}