将字符串修改应用于数组/列表

时间:2018-10-22 07:33:27

标签: java arrays string arraylist

考虑到ArrayList<String>带有文件扩展名的文件名,我如何习惯地使用所有文件名而不是文件扩展名来获得相同的数组。

有很多方法可以做到这一点,我可以轻松地创建一个新的数组,但是我想知道是否有一种很好的干净方法可以实现单层处理。

现在我正在这样做:

List<String> namesWithExt = ...
List<String> namesWithoutExt = new ArrayList<>();
namesWithExt.forEach(name -> namesWithoutExt.add(FilenameUtils.removeExtension(name)));
String[] namesWithoutExt = namesWithExt.toArray(String[]::new);

1 个答案:

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