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

j2e*_*nue 0 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());
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

"Collection.sort"这一行在编译时抱怨我没有传递正确的东西.我怎样才能实现这一目标?

在此输入图像描述

Yas*_*ash 6

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

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

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

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