java - 如何制作按字母顺序对集合进行排序的泛型函数

时间:2017-10-26 05:17:44

标签: java sorting generics comparator

我想创建一个实用程序方法,该方法可以接受列表并按字符串值对其进行排序。但我似乎无法弄清楚如何编写通用的参数。这是我到目前为止所做的:

public class StringUtils {

    public static <T> void sortAscending(List<T> list) {
        Collections.sort(list.getClass(),
                new Comparator<T>() {
            public int compare(T f1, T f2) {
                return f1.toString().compareTo(f2.toString());
            }
        });
    }
}

线&#34; Collection.sort&#34;在编译时抱怨我没有传递正确的东西。我怎样才能做到这一点?

documentation

1 个答案:

答案 0 :(得分:6)

Collections.sort()方法的源代码如下:

@SuppressWarnings({"unchecked", "rawtypes"})
public static <T> void sort(List<T> list, Comparator<? super T> c) {
    list.sort(c);
}

很明显,该方法需要List对象而不是Class对象。 因此,您的代码应该传递列表而不是list.getClass(),代码如下:

    Collections.sort(list,
        new Comparator<T>()
        {
            public int compare(T f1, T f2)
            {
                return f1.toString().compareTo(f2.toString());
            }
        });