如何将以下代码转换为Java 8

时间:2018-08-13 16:56:01

标签: lambda java-8 java-stream comparator

我以命令式风格编写了以下代码,效果很好。但是我想将其转换为Java 8,我已经尝试过了,但是无法以最优雅的方式获得。

List<Wrapper> futureList = new ArrayList<>();
List<Wrapper> pastList = new ArrayList<>();
List<Wrapper> list = fooRepository.findAll();
for(Wrapper data : list){
  if(data.getSchedule().toInstant().isAfter(new Date().toInstant())
       futureList.add(data);
   else
       pastList.add(data);     
 } 

1 个答案:

答案 0 :(得分:3)

好吧,如果您想使用Stream,最简单的方法就是像这样使用Collectors.partitioningBy

Map<Boolean, List<Wrapper>> map = list.stream()
        .collect(Collectors.partitioningBy(data -> data.getSchedule().toInstant().isAfter(Instant.now())));
List<Wrapper> pastList = map.get(false);
List<Wrapper> futureList = map.get(true);
相关问题