【问题标题】:How can I convert following code to Java 8如何将以下代码转换为 Java 8
【发布时间】:2018-08-13 16:56:00
【问题描述】:

我以命令式风格编写了以下代码,运行良好。但我想将它转换为 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);     
 } 

【问题讨论】:

    标签: lambda java-8 java-stream comparator


    【解决方案1】:

    好吧,如果你想使用Streams,最简单的方法就是像这样使用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);
    

    【讨论】:

    猜你喜欢
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 2021-08-24
    相关资源
    最近更新 更多