You can filter a set and collect into another set with Java 8 streams:
Set<Number> integers = numbers.stream()
.filter(x -> x instanceof Integer)
.collect(Collectors.toSet());
The returned set is a copy, not a live view.
Note that unlike, e.g., Guava's FluentIterable.filter, the resulting set is a Set<Integer> because Java doesn't know you've filtered out all the non-integers. If you need a Set<Integer>, you have to map after filtering.
Set<Integer> integers = numbers.stream()
.filter(x -> x instanceof Integer)
.map(x -> (Integer)x)
.collect(Collectors.toSet());
(You could combine the filter and map into a flatMap, but that would introduce a temporary stream object per integer, and isn't any more concise.)