我是Java 8的新手,正在尝试对Streams的需求。我有一个包含数千个Recod的csv文件,我的csv格式是
DepId,GrpId,EmpId,DepLocation,NoofEmployees,EmpType
===
D100,CB,244340,美国,1000,合同
D101,CB,543126,美国,1900,永久
D101,CB,356147,美国,1800,合同
D100,DB,244896,HK,500,半合约
D100,DB,543378,HK,100,永久
我的要求是使用两个条件过滤记录:a)EmpId以“ 244”开头或EmpId以“ 543”开头b)EmpType是“ Contract”和“ Permanent”
我在下面尝试
try (Stream<String> stream = Files.lines(Paths.get(fileAbsolutePath))) {
list = stream
.filter(line -> line.contains("244") || line.contains("543"))
.collect(Collectors.toList());
}
它正在基于244和543过滤员工,但是我担心的是,因为我使用的包含它可能还会获取其他数据,即它将不仅从EmpId列而且还会从其他列获取数据(其他列可能也包含以开头的数据这些数字)
类似地,因为我正在逐行阅读中合并EmpType,所以我没有办法强制将EmpType设置为“ Permanent”和“ Contract”
我是否缺少任何高级选项?
一只甜甜圈
慕容森
相关分类