selection sort with generics

元气小坏坏 提交于 2019-12-01 14:36:59
int[] list = {34, 17, 23, 35, 45, 9, 1};
...
selectionSort(list);

You are trying to call selectionSort() which signature is selectionSort(E[]), but int does not extend Comparable (It is a primitive, not even an object) - and thus the types are not matching.

You can try to create an Integer[] and pass it. Integer is an object and it extends Comparable<Integer>.
The alternative is to overload selectionSort() to accept both generic type for objects and to overload it for each needed primitive. This is the solution java uses for its Arrays.sort() method.

The same holds for printArray()

As said above you are using selectionSort(E[]) where E extends Comparable means , your selection sort can take the argument who implemented the Comparable interface. As int is primitive data so it's giving the compilation Error. So if you want generic feature then you can use Wrapper classes, All wrapper classes implemented the Comparable interface. The below code will work, Just edit version of your code

public class SelelctionSort 
{
public static void main(String[] args) 
{
    Integer[] list = {34, 17, 23, 35, 45, 9, 1};
    System.out.println("Original Array: ");
    printArray(list);

    selectionSort(list);
    System.out.println("\nSelection sort:");
    printArray(list);
    Float[] flist = {34.4f, 17.6f, 23.0f};
    selectionSort(list);
}

//selection sort
public static <E extends Comparable<E>> void selectionSort(E[] list)
{
    for(int i=0; i<list.length -1; i++)
    {
        int iSmallest = i;

        for(int j=i+1; j<list.length; j++)
        {
            if(list[iSmallest].compareTo((list[j])) > 0  )
            {
                iSmallest = j;
            }
        }
        E iSwap = list[iSmallest];
        list[iSmallest] = list[i];
        list[i] = iSwap;

    }
}

public static <E> void printArray(E[] list)
{

    for(int i=0; i<list.length; i++)
    {
        System.out.print(list[i] + ", ");
    }
}
}

it is really working this solution is working with all types of variables and as i m passing the String variable it is showing error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!