2016-05-07 11 views
0

バブルソートを使ってあらゆる種類のコレクションをソートするメソッドを実装する必要があります。その後、ソートされているかどうかをテストします。どのようにジェネリックを使ってこれを行うことができますか?バブルソートを使ってジェネリックコレクションをソートし、ソートされているかどうかチェックする方法

これは私がこれまで何をやったかである:

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

誰かが実装を提供するのを待っていますか? –

+0

項目の 'compareTo()'を使用できるように、メソッドのシグネチャを '> void sort(List list)'、 '> boolean isSorted(Iterable collection)'に変更します。 –

答えて

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

さらに、 'isSorted()'は 'Collection'や' Iterable'にも適用できます –

関連する問題