我习惯于C#和lambda表达式,但是我不能根据某些标准过滤一个java列表。如何在Java8中过滤列表?
例:
List<MyObject> list;
我需要得到所有有isMyFlag()真为MyObject。
在C#中真的很容易使用IEnumerable ...有没有类似于Java中的IEnumerable?
我习惯于C#和lambda表达式,但是我不能根据某些标准过滤一个java列表。如何在Java8中过滤列表?
例:
List<MyObject> list;
我需要得到所有有isMyFlag()真为MyObject。
在C#中真的很容易使用IEnumerable ...有没有类似于Java中的IEnumerable?
见的Java 8中的新Stream API
你需要做一个过滤器,然后使用Stream API收集在一个列表中的结果:
list.stream().filter(x -> x.isMyFlag()).collect(Collectors.toList());
您也可以使用methode引用来代替lambda表达式:'.filter(x :: isMyFlag)' – Prim
随着lambda表达式,你可以做到以下几点:
List<MyObject> filteredList = list.stream().filter(myObj -> myObj.isMyFlag())
.collect(Collectors.toList());
要使用Stream API,您需要调用stream()方法。这可能是来自C#的一个惊喜,因为你不需要这样做,但是一旦你克服了这个障碍,它应该大致相同。
List<MyObject> list2 = list.stream()
.filter(m -> m.isMyFlag())
.collect(Collectors.toList());
'list'不是'Stream
好吧,Java8带有可用的Lambda表达式。你检查过那些吗? – Stultuske