什么时候更喜欢平面地图而不是地图

时间:2018-12-17 15:39:36

标签: android java-8 optional

我编写了以下代码,以了解flatMap()以及它与.map()运算符之间的区别。根据下面发布的“代码”部分中的代码,我希望对象x的类型为String而不是type 可选的。

我指的是一个教程,它提供以下发布在“教程代码”部分中的代码。 如代码中所示,作者提供了以下代码:

String position = Optional.ofNullable(user)
flatMap(u -> u.getPosition()).orElse("default");

在我的代码中并根据它,对象“ position”应该为String类型。 阿洛斯,如果您能向我解释我何时应该从您自己的角度使用flatMap,我将不胜感激?我阅读了几篇技术文章,但仍然需要进一步说明。

我试图在Observables中将flatmap的概念模拟为可选,而不是flatmap ...但是对于我来说,在observables中的flatMap更有意义。

谢谢

链接到教程

https://stackify.com/optional-java/

代码

 Optional<String> x = OptionalsUtils.toOptional(this.getUser_1())
            .flatMap(u1 -> u1.getOptUserEmailAddress());

private User getUser_1() {
    List<String> list = new ArrayList<String>(5);
    list.add("foxNews");
    list.add("nationalGeographic");
    list.add("cnn");

    User user = new User();
    user.setUserName("Adam");
    user.setUserEmailAddres("adam99@gmail.com");
    user.setUserId(null);
    user.setUserFavoritesTvList(list);
    return user;
}

 public Optional<String> getOptUserEmailAddress() {
    return OptionalsUtils.toOptional(this.getUserEmailAddress());//.ofNullable
}

教程代码

User user = new User("anna@gmail.com", "1234");
user.setPosition("Developer");
String position = Optional.ofNullable(user)
  .flatMap(u -> u.getPosition()).orElse("default");

...
...
public class User {    
private String position;

public Optional<String> getPosition() {
    return Optional.ofNullable(position);
}

//...

}

0 个答案:

没有答案