参数是否比传递的参数更通用?

时间:2014-03-19 16:03:51

标签: java parameter-passing shuffle

更具体的问题是,我希望能够对数组进行混洗,无论它是否包含整数,字符串,对象或其他内容。使用Comparable类型似乎有问题,我不想使用int[]String[]因为我想使用更通用的类来允许所有这些类型的数组使用相同的Shuffle类进行洗牌。

这是我的代码。

import java.lang.Math;

public class Shuffle
{
    public Shuffle() {}

    public void shuffle(Comparable[] a)
    {
        int n= a.length;
        int j;
        for (int i=1; i<n; i++)
        {
            j= (int)(Math.random()*(i+1));
            if (i!=j) swap(a, i, j);
        }
    }

    protected void swap(Comparable[] a, int i, int j)
    {
        Comparable temp= a[i];
        a[i]= a[j];
        a[j]= temp;
    }

}

1 个答案:

答案 0 :(得分:3)

您的shuffleswap方法未使用compareTo,因此没有理由使Comparable类型。

在这种情况下,Object[]似乎是最佳选择,可替代Comparable[]。任何对象都可以进行洗牌。这很普遍。