我想创建一个实用程序方法,该方法可以接受列表并按字符串值对其进行排序。但我似乎无法弄清楚如何编写通用的参数。这是我到目前为止所做的:
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;在编译时抱怨我没有传递正确的东西。我怎样才能做到这一点?
答案 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());
}
});