java if循环优化_Java 8代码优化-删除if语句

我正在学习java 8的一些技巧。我创建了一个简单的列表:

private void createData() {

bottles.add(new Whiskey("Jack Daniels", "PL"));

bottles.add(new Whiskey("Balentains", "PL"));

bottles.add(new Whiskey("Balentains", "EN"));

bottles.add(new Whiskey("Balentains", "EN"));

bottles.add(new Whiskey("Balentains", "GR"));

bottles.add(new Whiskey("Balentains", "PL"));

bottles.add(new Whiskey("Balentains", "GR"));

}

现在我想从这个列表中得到一些东西。如果用户提供参数

origin

,我要按筛选此列表

origins

,但当他给错了

起源

那么他应该得到一个空名单,当他不给的时候

起源

然后他应该得到整个列表。

我有一个过滤列表中项目的方法:

private Optional> getWhiskeyFromCountry(String origin) {

final List whiskies = bottles.stream()

.filter(b -> b.getOrigin().equals(origin))

.collect(Collectors.toList());

return whiskies.isEmpty() ? Optional.empty() : Optional.of(whiskies);

}

以及获取参数(或不获取参数)和结果响应的主要方法:

private void getAll(RoutingContext routingContext) {

Optional origin = Optional.ofNullable(routingContext.request().params().get("filter"));

List result = getWhiskeyFromCountry(origin.orElse("")).orElse(Collections.EMPTY_LIST);

routingContext.response()

.putHeader("content-type", "application/json; charset=utf-8")

.end(Json.encodePrettily(origin.isPresent() ? result : bottles));

}

问题是,我仍然使用if statemant在最后一行,我不想这样做。我想把这段代码改成清晰和实用的。我试着用选项来做一些魔术,但最后我得到了这个,我认为它可以做得更好,更简单。你能帮我吗?或者这个代码是好的,我不需要改变什么?这个问题更多的是关于干净的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值