如何使用冒泡排序对任何通用集合进行排序并检查它是否已排序?

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;
    }
}