java - 如何使用流保存本机变量
问题描述
嗨,我试图理解 java 8 api 流,我不知道这是否可以做到,但我试图对列表进行过滤,并保存在这样的新变量中,编译器对我说他不能从 Stream 转换为字符串,它有道理,但我该怎么做?
List<String> lista = new ArrayList<String>();
lista.add("1");
lista.add("2");
String num = lista.stream().filter(x -> x.equals("1"));
如果我想将该字符串转换为 int,我会尝试这样做,但编译器也会对我说,错误的类型
List<String> lista = new ArrayList<String>();
lista.add("1");
lista.add("2");
int num = lista.stream().filter(x -> x.equals("1")).map(x -> Integer.parseInt(x));
解决方案
您只错过了一个电话findFirst
:
String num = lista.stream().filter(x -> x.equals("1")).findFirst().get();
也适用于Map
:
int num = lista.stream().filter(x -> x.equals("1")).map(x -> Integer.parseInt(x)).findFirst().get();
get
使用方法时要小心Optional
,如果过滤器什么都不返回,它会抛出NoSuchElementException
。
推荐阅读
- python - Selenium __init__() 缺少 1 个必需的位置参数:'text_'
- node.js - Discord.js 命令机器人错误:机器人快疯了
- rdf - 如何在 OWL 中将属性重用为类?
- qt - 自定义 QQuick3DGeometry 不显示
- r - 使用新标签创建新列
- javascript - 在 mongoDB 和 Angular 中实现 socket.io 会引发错误 Cannot GET /socket.io/
- c# - 浏览器意外刷新时的 Blazor WebAssembly 生命周期方法
- spring-boot - 是否可以告诉 spring cloud sleuth 不记录密码等值?
- reactjs - PDFTron 中的滚动页面
- google-sheets - 将 2 个 REGEXREPLACE 公式合二为一