簡體   English   中英

如何對同時包含字符和整數的數組進行排序?

[英]How to sort an array containing both characters and integers?

考慮以下數組:

{5,"k",2,"d",3,"e"}

如何對數組進行排序,使字符和整數分別分組並排序:

{"d","e","k",2,3,5} 

您可以通過調用Arrayssort()方法之一來對Arrays進行sort()

在您的情況下,您想調用sort(T[] a, Comparator<? super T> c)

由於您的數組是一個Object[] ,這意味着您需要實現Comparator<Object>

這是一個示例實現,可以根據需要對示例值進行排序:

public final class MixedComparator implements Comparator<Object> {
    @Override
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public int compare(Object obj1, Object obj2) {
        Class<?> class1 = obj1.getClass();
        Class<?> class2 = obj2.getClass();

        // Sort values of same type according to their natural order
        if (class1 == class2)
            return ((Comparable)obj1).compareTo(obj2);

        // Sort values of different type by class name,
        // in descending order, so `String` sorts before `Integer`
        return class2.getName().compareTo(class1.getName());
    }
}

然后,您可以像這樣使用它:

Object[] arr = { 5, "k", 2, "d", 3, "e" };
Arrays.sort(arr, new MixedComparator());

System.out.println(Arrays.toString(arr));

輸出:

[d, e, k, 2, 3, 5]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM