栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何以升序排列文件名?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何以升序排列文件名?

您要的是数字排序。您需要实现一个Comparator并将其传递给Arrays#sort方法。在compare方法中,您需要从每个文件名中提取数字,然后比较数字。

之所以得到现在得到的输出,是因为排序按字母数字顺序进行

这是一种非常基本的方法。此代码使用简单的

String
操作来提取数字。如果您知道文件名的格式,则此方法有效
Spectrum_<number>.txt
。一种更好的提取方法是使用正则表达式。

public class FileNameNumericSort {    private final static File[] files = {        new File("Spectrum_1.txt"),        new File("Spectrum_14.txt"),        new File("Spectrum_2.txt"),        new File("Spectrum_7.txt"),  new File("Spectrum_1000.txt"),         new File("Spectrum_999.txt"),         new File("Spectrum_9990.txt"),         new File("Spectrum_9991.txt"),     };    @Test    public void sortByNumber() {        Arrays.sort(files, new Comparator<File>() { @Override public int compare(File o1, File o2) {     int n1 = extractNumber(o1.getName());     int n2 = extractNumber(o2.getName());     return n1 - n2; } private int extractNumber(String name) {     int i = 0;     try {         int s = name.indexOf('_')+1;         int e = name.lastIndexOf('.');         String number = name.substring(s, e);         i = Integer.parseInt(number);     } catch(Exception e) {         i = 0; // if filename does not match the format     // then default to 0     }     return i; }        });        for(File f : files) { System.out.println(f.getName());        }    }}

输出量

Spectrum_1.txtSpectrum_2.txtSpectrum_7.txtSpectrum_14.txtSpectrum_999.txtSpectrum_1000.txtSpectrum_9990.txtSpectrum_9991.txt


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419191.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号