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"这一行在编译时抱怨我没有传递正确的东西.我怎样才能实现这一目标?
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)