gpt4 book ai didi

java - 如何根据扩展名对包含文件的 arrayList 进行排序

转载 作者:行者123 更新时间:2023-12-02 11:25:37 25 4
gpt4 key购买 nike

File [] templatesList = templateFileList.toArray(new File[0] );
Arrays.sort(templatesList,ExtensionFileComparator.EXTENSION_INSENSITIVE_REVERSE);

templatesList 包含类似

的文件
  • app.vm
  • app.1.ivm
  • app.2.ivm
  • mart.ivm
  • mart.vm

根据最后一个扩展名进行第一次反向排序,然后根据基本名称排序,然后对数字进行排序。排序后,预期输出为

  • app.vm
  • mart.vm
  • app.1.ivm
  • app.2.ivm
  • mart.ivm

我的代码:

    File [] templatesList = templateFileList.toArray(new File[0] );
List <File> tempList = Arrays.asList(templatesList);
tempList.stream().sorted(ExtensionFileComparator.EXTENSION_INSENSITIVE_REVERSE.
thenComparing(NameFileComparator.NAME_INSENSITIVE_COMPARATOR));

List <File> templateFileList1 = new ArrayList(Arrays.asList(templatesList));
Collections.sort(templateFileList1, new Comparator <File>() {

@Override
public int compare(File f1, File f2) {
return Integer.parseInt(FilenameUtils.getExtension(FilenameUtils.getBaseName(f1.toString())))-
Integer.parseInt(FilenameUtils.getExtension(FilenameUtils.getBaseName(f2.toString())));
}
});

最佳答案

您可以混合使用 Apache commons Comparator 中的 ExtensionFileComparatorNameFileComparator
使用 Java 8:

Arrays.sort(templatesList, ExtensionFileComparator.EXTENSION_INSENSITIVE_REVERSE
.thenComparing(NameFileComparator.NAME_INSENSITIVE_COMPARATOR));

或者在没有任何 API 的情况下编写它,并使用更多的样板代码。

关于java - 如何根据扩展名对包含文件的 arrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49649078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com