如何解决使用Java Stream实例化文件中的对象
我正在学习有关Java 8 Stream API的过程,并且我正在尝试一些无法正常工作的尝试。本质上,我有一个以以下方式包含字符串的文件:
0132435,John,Doe,30000.00
其中第一部分是雇员ID,第二部分是名字,第三部分是姓氏,第四部分是年薪,均用逗号分隔。我试图逐行读取此文件,将整行传递给称为parse的静态方法,该方法将实例化每个Employee,然后返回该雇员,然后我要将所有这些雇员保存到某种列表或数组中,以便我可以分析数据。我正在尝试使用Java流来完成所有这些工作,但是我遇到了困难,并且不知道为什么我的代码不想编译。请记住,我对此很陌生,谢谢。您可以在下面找到流和解析方法的代码。
解析方法
public static Employee parse(String s)
{
String[] empData = s.split(",");
Employee newEmp = new Employee(Integer.parseInt(empData[0]),empData[1],empData[2],BigDecimal.valueOf(Double.parseDouble(empData[3])));
return newEmp;
}
流尝试
//try with resources
try(Stream<String> stream = Files.lines(Paths.get(fileName))){
stream.forEach(Employee::parse).collect(Collectors.toList());
}
catch(IOException e)
{
e.printStackTrace();
}
解决方法
您的想法正确,但是您需要使用map
来获取Employee
的流,然后可以收集它们:
List<Employee> employees =
Files.lines(Paths.get(fileName)).map(Employee::parse).collect(Collectors.toList());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。