首页 > 解决方案 > 如何使用流保存本机变量

问题描述

嗨,我试图理解 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));

标签: javajava-8java-stream

解决方案


您只错过了一个电话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


推荐阅读