Java 比较器-特殊字符排序

Java 比较器-特殊字符排序,java,collections,Java,Collections,我想按字母顺序对名字进行排序,但特殊字符应该排在第一位而不是最后一位 从下面开始,代码中的特殊字符排在最后 Collections.sort(elementList,new Comparator<Element>() { @Override public int compare(Element o1, Element o2) { return o1.getDisplayName()

我想按字母顺序对名字进行排序,但特殊字符应该排在第一位而不是最后一位

从下面开始,代码中的特殊字符排在最后

Collections.sort(elementList,new Comparator<Element>() {
                @Override
                public int compare(Element o1, Element o2) {
                    return o1.getDisplayName().toUpperCase().compareTo(o2.getDisplayName().toUpperCase());
                }
            });
Collections.sort(elementList,newcomparator(){
@凌驾
公共整数比较(元素o1、元素o2){
返回o1.getDisplayName().toUpperCase().compareTo(o2.getDisplayName().toUpperCase());
}
});

下面的程序工作正常。它在开始处使用特殊字符对字符串进行排序

import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;

public class ComparatorDemo {
    String element;

    public ComparatorDemo(String element) {
        this.element = element;
    }

    public static void main(String[] args) {
        List<ComparatorDemo> stringCollection = new LinkedList<>();
        stringCollection.add(new ComparatorDemo("abcd"));
        stringCollection.add(new ComparatorDemo("jklm"));
        stringCollection.add(new ComparatorDemo("opr"));
        stringCollection.add(new ComparatorDemo("zabh"));
        stringCollection.add(new ComparatorDemo("bhuy"));
        stringCollection.add(new ComparatorDemo("@theh#saj"));
        stringCollection.add(new ComparatorDemo("*&^%$"));
        stringCollection.add(new ComparatorDemo("**"));
        stringCollection.add(new ComparatorDemo("!@#"));
        stringCollection.add(new ComparatorDemo("@@#$"));
        stringCollection.add(new ComparatorDemo("#$%$"));
        stringCollection.add(new ComparatorDemo("%^return"));
        System.out.println(stringCollection);
        Comparator<ComparatorDemo> comparator = new Comparator<ComparatorDemo>() {
            @Override
            public int compare(ComparatorDemo o1, ComparatorDemo o2) {
                return o1.element.toUpperCase().compareTo(
                        o2.element.toUpperCase());
            }
        };
        Collections.sort(stringCollection, comparator);
        System.out.println(stringCollection);
    }

    @Override
    public String toString() {
        return "ComparatorDemo [element=" + element + "]";
    }

}

Output :
Unsorted List - [ComparatorDemo [element=abcd], ComparatorDemo [element=jklm], ComparatorDemo [element=opr], ComparatorDemo [element=zabh], ComparatorDemo [element=bhuy], ComparatorDemo [element=@theh#saj], ComparatorDemo [element=*&^%$], ComparatorDemo [element=**], ComparatorDemo [element=!@#], ComparatorDemo [element=@@#$], ComparatorDemo [element=#$%$], ComparatorDemo [element=%^return]]

Sorted List - [ComparatorDemo [element=!@#], ComparatorDemo [element=#$%$], ComparatorDemo [element=%^return], ComparatorDemo [element=*&^%$], ComparatorDemo [element=**], ComparatorDemo [element=@@#$], ComparatorDemo [element=@theh#saj], ComparatorDemo [element=abcd], ComparatorDemo [element=bhuy], ComparatorDemo [element=jklm], ComparatorDemo [element=opr], ComparatorDemo [element=zabh]]
import java.util.Collections;
导入java.util.Comparator;
导入java.util.LinkedList;
导入java.util.List;
公共类比较程序{
字符串元素;
公共ComparatorDemo(字符串元素){
this.element=元素;
}
公共静态void main(字符串[]args){
List stringCollection=新建LinkedList();
添加(新的ComparatorDemo(“abcd”);
添加(新的ComparatorDemo(“jklm”);
stringCollection.add(新的ComparatorDemo(“opr”));
stringCollection.add(新的ComparatorDemo(“zabh”);
stringCollection.add(新的ComparatorDemo(“bhuy”);
添加(新的ComparatorDemo(“@theh#saj”);
添加(新的ComparatorDemo(“*&^%$”);
stringCollection.add(新的ComparatorDemo(“**”);
stringCollection.add(新的ComparatorDemo(“!@#”);
添加(新的ComparatorDemo(“@@#$”);
添加(新的ComparatorDemo(“#$%$”);
stringCollection.add(新的ComparatorDemo(“%^return”);
System.out.println(stringCollection);
比较器比较器=新比较器(){
@凌驾
公共整数比较(ComparatorDemo o1,ComparatorDemo o2){
返回o1.element.toUpperCase().compareTo(
o2.element.toUpperCase());
}
};
Collections.sort(stringCollection,comparator);
System.out.println(stringCollection);
}
@凌驾
公共字符串toString(){
返回“ComparatorDemo[element=“+element+”]”;
}
}
输出:
未排序的列表-[ComparatorDemo[element=abcd]、ComparatorDemo[element=jklm]、ComparatorDemo[element=opr]、ComparatorDemo[element=zabh]、ComparatorDemo[element=@theh#saj]、ComparatorDemo[element=*&^%$]、ComparatorDemo[element=**]、ComparatorDemo[element=!@##]、ComparatorDemo[element=@#=]和ComparatorDemo[element=\$%$],ComparatorDemo[element=%^return]]
排序列表-[ComparatorDemo[element=!@#]、ComparatorDemo[element=#$%$]、ComparatorDemo[element=%^return]、ComparatorDemo[element=*&^%$]、ComparatorDemo[element=***]、ComparatorDemo[element=@#$]、ComparatorDemo[element=@theh#saj]、ComparatorDemo[element=abcd]、ComparatorDemo[element=bhuy]、ComparatorDemo[element=jklm]、ComparatorDemo[element=opr],ComparatorDemo[element=zabh]]

您似乎忘记在问题中包含一个问题。如果字符串的默认顺序没有帮助,您需要编写自己的逻辑,以不同的方式处理带有特殊字符的对象。请提供几个示例,说明名称的排序方式。特殊字符是什么意思?标点符号是什么关于字符?它们已在字母字符之前排序。