【发布时间】:2015-09-27 17:01:04
【问题描述】:
我需要对List类型的数据进行排序,所以我通过map将其转换为Comparable[],然后排序,现在我需要将其转换回T并返回List类型的数据。我试图将其转换为对象,然后转换为 T,但它没有工作。有人可以帮忙吗? :)
@SuppressWarnings("rawtypes")
public static <T> void sort(List<T> data, Function<Object, Comparable> map) {
Comparable[] a = convertDataToComparable(data, map);
quickSort(a);
//convertComparableToData(); //here
}
【问题讨论】:
-
为什么不调用 Collections.sort(list, newComparatorBasedOnFunction)?
-
另外,您没有可让您进行反向转换的函数。甚至可能都不可能。所以你必须那样做。
-
不要抑制原始类型警告:修复它们。你需要
Comparable<?>而不是Comparable。这是否暗示了您为什么要尝试做一些不明确的事情? -
注释中的第一个提示是这里有一些非常错误的地方——你为什么要禁止原始类型警告?几乎没有充分的理由忽略编译器警告。
-
我不明白你想要做什么:输入
T应该是<T extends Comparable<T>>。另外,贴出所用方法的代码,有助于理解您的需求。
标签: java list sorting generics comparable