首页 > 解决方案 > 如何通过用户输入的字符值过滤数组列表

问题描述

尝试按名字的第一个字母过滤学生的 ArrayList。char 值是用户定义的。

我尝试将 char 更改为字符串并使用显示“”而不是 char firstLetter。

ArrayList<Student> studentList = new ArrayList<>(Arrays.asList(students));

System.out.println("Please enter the first letter a students name: ");
firstLetter = keyboard.nextLine().charAt(0);

Student student1 = student.stream().filter(x -> x.getFirstName().indexOf(firstLetter) == 0)
            .map(Student::getFirstName).findAny().orElse(Null);

目标是从数组中打印学生列表,其名称以用户输入的字母开头。获取 char 不能被取消引用错误。

标签: javajava-stream

解决方案


您可以改为使用:

.filter(x -> x.getFirstName().startsWith(String.valueOf(firstLetter)))

并摆脱map正在使用的 ping

.map(Student::getFirstName)

这样您在结果实体中就没有字符串。


推荐阅读