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

时间:2016-05-07 13:14:51

标签: java sorting generics bubble-sort

我必须实现一个方法,通过使用冒泡排序对任何类型的集合进行排序,然后测试它是否真的已经排序,我如何通过使用泛型来实现这一点?

这是我迄今为止所做的:

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

1 个答案:

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