![]() | 1 watermelon11 2020-05-26 12:03:09 +08:00 getOrDefault |
![]() | 2 wangyanrui 2020-05-26 12:03:22 +08:00 via Android map.getOrDefault 不行吗 |
3 ChanKc 2020-05-26 12:34:47 +08:00 via Android get or default 要求 map 的 value 类型都是 string,有一点不合楼主要求? |
4 handong970123 2020-05-26 16:52:49 +08:00 @ChanKc 还在这限制?我怎么不知道 |
![]() | 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 |
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) |
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 。不用泛型当我没说 |
![]() | 8 lxk11153 2020-05-26 18:31:33 +08:00 java.util.Objects#toString(Object, String) |
9 keshawnvan 2020-05-26 21:57:02 +08:00 ![]() Optional.ofNullable(map.get("xxx")).map(Object::toString).orElse(""); |
![]() | 10 KentY 2020-05-26 22:01:25 +08:00 思考这个问题会感受到 kotlin 比 java 的简洁明了. |
![]() | 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=> "" } |