【问题标题】:Java 8 Stream optimizationJava 8 流优化
【发布时间】:2019-06-24 07:55:47
【问题描述】:

我有一个下面的代码库,用于查找任何匹配的对象及其状态失败,实现下面代码的最简化方法是什么

DummyCounter dummyCounter=new DummyCounter();
dummyCounter.setDue("DONE");
dummyCounter.setStatus(1);

DummyCounter dummyCounte1=new DummyCounter();
dummyCounte1.setDue("FAILRUE");
dummyCounte1.setStatus(1);

DummyCounter dummyCounte2=new DummyCounter();
dummyCounte2.setDue("DONE");
dummyCounte2.setStatus(1);

List<DummyCounter>  counterList=new ArrayList<DummyCounter>();
counterList.add(dummyCounter);
counterList.add(dummyCounte2);
counterList.add(dummyCounte2);

用法

final Integer integer = counterList.stream()
       .filter(customer -> "DONE".equals(customer.getDue()))
       .map(DummyCounter::getStatus)
       .filter(Objects::nonNull)
       .findAny()
       .get();

System.out.println(integer);

【问题讨论】:

  • 我不认为.filter(Objects::nonNull) 的需要...至少从你的例子来看
  • 在这个例子中状态总是设置为1
  • 你最好使用enum 来代替String。这可能会使您免于“失败”之类的拼写错误...

标签: java optimization java-8 java-stream simplify


【解决方案1】:

要查找所有失败的条目,您可以执行以下操作:

List<DummyCounter> failedDummies = counterList.stream()
      .filter(dummy-> "FAILURE".equals(dummy.getDue()))
      .collect(Collectors.toList());

查找失败计数:

int totalFailedCounters = counterList.stream()
          .filter(dummy-> "FAILURE".equals(dummy.getDue()))
          .collect(Collectors.toList()).size();

【讨论】:

    猜你喜欢
    • 2016-10-09
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 2014-05-16
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多