V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sandman511
V2EX  ›  Java

Optional.ofNullable(map.get("xxx")).orElse("").toString();有更简洁 Map 取值 toString 方法吗

  •  
  •   sandman511 · 2020-05-26 12:00:50 +08:00 · 4176 次点击
    这是一个创建于 1423 天前的主题,其中的信息可能已经有所发展或是发生改变。
    11 条回复    2020-05-26 22:22:35 +08:00
    watermelon11
        1
    watermelon11  
       2020-05-26 12:03:09 +08:00
    getOrDefault
    wangyanrui
        2
    wangyanrui  
       2020-05-26 12:03:22 +08:00 via Android
    map.getOrDefault 不行吗😂
    ChanKc
        3
    ChanKc  
       2020-05-26 12:34:47 +08:00 via Android
    get or default 要求 map 的 value 类型都是 string,有一点不合楼主要求?
    handong970123
        4
    handong970123  
       2020-05-26 16:52:49 +08:00
    @ChanKc 还在这限制?我怎么不知道
    KentY
        5
    KentY  
       2020-05-26 18:02:44 +08:00
    @wangyanrui @watermelon11
    getOrDefault() is not exactly the same as he wanted.
    getOrDefault 是说, 如果 key 不在, 给 default.
    而 OP 的问题, 有可能 key"XXX"存在, 值是 null
    aguesuka
        6
    aguesuka  
       2020-05-26 18:09:09 +08:00
    如果 map 的 VALUE 是 String 类型,则不要 toString,否则 orElse("") 不会通过编译。
    Optional.ofNullable(map.get("xxx")).map(Object::toString).orElse(""); 如果要用 Optional 是这样;
    如果是我就自己封一个方法 toStringOrEmpty(String stringOrNull)
    ChanKc
        7
    ChanKc  
       2020-05-26 18:19:37 +08:00 via Android
    @handong970123 我表述有点问题…试想一个 Map<String, Person>,get Or default 的那个 default 应该只能是 Person 而不是 String,如果要拿 String 那么泛型的 value 类型应该也要 String 。不用泛型当我没说
    lxk11153
        8
    lxk11153  
       2020-05-26 18:31:33 +08:00
    java.util.Objects#toString(Object, String)
    keshawnvan
        9
    keshawnvan  
       2020-05-26 21:57:02 +08:00   ❤️ 1
    Optional.ofNullable(map.get("xxx")).map(Object::toString).orElse("");
    KentY
        10
    KentY  
       2020-05-26 22:01:25 +08:00
    思考这个问题会感受到 kotlin 比 java 的简洁明了.
    Mistwave
        11
    Mistwave  
       2020-05-26 22:22:35 +08:00
    来写 Scala 吧:

    map.getOrElse("xxx", "").toString



    map.get("xxx") match {
    case Some(x) => x.toString
    case None => ""
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1066 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:09 · PVG 03:09 · LAX 12:09 · JFK 15:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.