考虑到ArrayList<String>
带有文件扩展名的文件名,我如何习惯地使用所有文件名而不是文件扩展名来获得相同的数组。
有很多方法可以做到这一点,我可以轻松地创建一个新的数组,但是我想知道是否有一种很好的干净方法可以实现单层处理。
现在我正在这样做:
List<String> namesWithExt = ...
List<String> namesWithoutExt = new ArrayList<>();
namesWithExt.forEach(name -> namesWithoutExt.add(FilenameUtils.removeExtension(name)));
String[] namesWithoutExt = namesWithExt.toArray(String[]::new);
答案 0 :(得分:4)
使用Stream
:
String[] namesWithoutExt =
namesWithExt.stream()
.map(name -> FilenameUtils.removeExtension(name))
.toArray(String[]::new);
或:
String[] namesWithoutExt =
namesWithExt.stream()
.map(FilenameUtils::removeExtension)
.toArray(String[]::new);