如何使用冒泡排序对任何通用集合进行排序并检查它是否已排序?
How to sort any generic collection using bubble sort and check if it's sorted?
我必须实现一种方法,该方法使用冒泡排序对任何类型的集合进行排序,然后测试它是否真的排序了我如何使用泛型完成此操作?
这是我到目前为止所做的:
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));
}
您不能对任何给定的集合进行排序,因为并非所有集合都是有序的。但是,您可以对任何 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;
}
}
我必须实现一种方法,该方法使用冒泡排序对任何类型的集合进行排序,然后测试它是否真的排序了我如何使用泛型完成此操作?
这是我到目前为止所做的:
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));
}
您不能对任何给定的集合进行排序,因为并非所有集合都是有序的。但是,您可以对任何 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;
}
}