java - 如何通过用户输入的字符值过滤数组列表

标签 java java-stream

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

我尝试将字符更改为字符串并使用显示“”而不是字符第一个字母。

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);

目标是从数组中打印姓名以用户输入的字母开头的学生列表。获取字符无法取消引用错误。

最佳答案

您可以使用:

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

并摆脱正在使用的mapping

.map(Student::getFirstName)

这样生成的实体中就没有字符串。

关于java - 如何通过用户输入的字符值过滤数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57992546/

相关文章:

Java:流上的函数组合

java - 如何使用 JAVA 8 从 map 中获取第一个键值?

java - 什么等同于 C#'s Select clause in JAVA' s 流 API

java - 使用java 8流过滤2个数组复合对象元素

java - Android - 如何对齐以编程方式创建的表行内的 View

java - Gradle 构建错误 java.lang.IllegalArgumentException

java - 排序时的 ConcurrentModification 异常

java - Spark 使用 Java 流式传输一个日志文件不会生成任何输出

java - 在 android 中的正则表达式中进行组约束

java - 如何创建多步骤表单