phép nói rằng tôi cóTôi có thể lọc một dòng <T> theo lớp của phần tử để có được một Dòng <U> trong một bước không?
class Dog extends Animal {}
class Cat extends Animal {}
Và tôi có một danh sách các vật Sử dụng Ổi FluentIterable Tôi có thể lọc và chuyển đổi trong một bước
List<Cat> cats = FluentIterable.from(animals)
.filter(Cat.class)
.toList();
Sử dụng Java8 tôi cần phải làm
List<Cat> cats = animals.stream()
.filter(c -> c instanceof Cat)
.map(c -> (Cat) c)
.collect(Collectors.toList());
Không có cách nào tôi có thể làm cho bộ lọc & bản đồ trong một bước, phải không?
Trong C# đó là 'Enumerable.OfType' phương pháp khuyến nông, nhưng tôi không biết nó là gì trong java. –
ma thuật 'flatMap()' .... nhưng không làm điều đó :) – ZhongYu
cũng thử '.filter (Cat.class :: isInstance) .map (Cat.class :: cast)' - nó không phải là tốt hơn tất nhiên. – ZhongYu