如何解决将对象强制转换为List <String>
我有一个Map<String,Object>
,其中包含元素值List<String>
现在,我需要过滤后者并检索包含@
的第一个值。
我所做的最好的是:
Map<String,Object> map = new HashMap<>();
map.put("alias",List.of("Mxxx","fstarred@mymail.org"));
final Object obj = map.get("alias");
final List lst = (List) obj;
final Object output= lst.stream()
.filter(o -> ((String) o).contains("@"))
.findFirst()
.orElse(null);
但是看起来很冗长,并且主要需要:
- 最终转换为输出的字符串
- 对传递到过滤器中的每个对象的强制转换
对于以上问题,我尝试了.map(String.class::cast)
- 在
lst.stream()
之后
- 在
filter(o -> ((String) o).contains("@"))
之后
这些方法都没有奏效。
有任何提示吗?
解决方法
根据建议,请勿使用原始类型。这是您应该使用的方法。
Map<String,List<String>> map = new HashMap<>();
map.put("alias",List.of("Mxxx","fstarred@mymail.org"));
List<String> list = map.get("alias");
String output= list.stream()
.filter(o ->o.contains("@"))
.findFirst()
.orElse(null);
System.out.println(output);
打印
fstarred@mymail.org
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。