相关疑难解决方法(0)

Windows资源管理器排序方法

我正在寻找一种算法来排序字符串,类似于在Windows资源管理器中排序文件(和文件夹)的方式.似乎在排序时会考虑字符串中的数值,这会产生类似的结果

name 1, name 2, name 10
Run Code Online (Sandbox Code Playgroud)

代替

name 1, name 10, name 2
Run Code Online (Sandbox Code Playgroud)

通过常规字符串比较得到的.

我本人即将开始写这篇文章,但是想要检查一下是否有人这样做过,并愿意分享一些代码或见解.我接近这个的方法是在比较之前将前导零添加到名称中的数值.这会产生类似的结果

name 00001, name 00010, name 00002
Run Code Online (Sandbox Code Playgroud)

当使用常规字符串排序进行排序时,会给出正确的结果.

有任何想法吗?

sorting algorithm

19
推荐指数
2
解决办法
7353
查看次数

Java - 像Windows资源管理器一样排序字符串

我想在另一个问题上使用Sander Pham建议的代码.我需要像Windows资源管理器那样对字符串名称的java ArrayList进行排序.他的代码适用于一切,但只针对一个问题.我本来希望对这个问题发表评论,但我需要更多的声誉点来评论.无论如何......他建议使用自定义比较器实现的类并使用它来比较字符串名称.这是该类的代码:

class IntuitiveStringComparator implements Comparator<String>
{
    private String str1, str2;
    private int pos1, pos2, len1, len2;

    public int compare(String s1, String s2)
    {
        str1 = s1;
        str2 = s2;
        len1 = str1.length();
        len2 = str2.length();
        pos1 = pos2 = 0;

        int result = 0;
        while (result == 0 && pos1 < len1 && pos2 < len2)
        {
            char ch1 = str1.charAt(pos1);
            char ch2 = str2.charAt(pos2);

            if (Character.isDigit(ch1))
            {
                result = Character.isDigit(ch2) ? compareNumbers() : -1;
            }
            else if …
Run Code Online (Sandbox Code Playgroud)

java windows sorting explorer comparator

3
推荐指数
1
解决办法
2513
查看次数

标签 统计

sorting ×2

algorithm ×1

comparator ×1

explorer ×1

java ×1

windows ×1