我必须实现一个方法,通过使用冒泡排序对任何类型的集合进行排序,然后测试它是否真的已经排序,我如何通过使用泛型来实现这一点?
这是我迄今为止所做的:
public class SortManager {
public <T extends Collection> void bubbleSort(T collection) {
//sort a given collection
}
public <T extends Collection<?>> boolean isSorted(T collection) {
//need to check if a given collection is sorted
return false;
}
}
测试:
@Test
public void testIfTheCollectionsAreSorted() {
ArrayList<Integer> integers = new ArrayList<>();
SortManager sortManager = new SortManager();
sortManager.bubbleSort(integers);
assertTrue(sortManager.isSorted(integers));
}
答案 0 :(得分:2)
您无法对任何给定集合进行排序,因为并非所有集合都是有序的。但是,您可以对任何List<...>
冒泡排序很容易查找和实现,你在这里错过的是元素必须实现Comparable<...>
或更改签名以获取比较器(但你可能想要后者)
class SortManager {
public <T> void bubbleSort(List<T> list, Comparator<? super T> comp) {
...
}
public <T> boolean isSorted(List<T> list, Comparator<? super T> comp) {
...
return false;
}
}