更具体的问题是,我希望能够对数组进行混洗,无论它是否包含整数,字符串,对象或其他内容。使用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;
}
}
答案 0 :(得分:3)
您的shuffle
和swap
方法未使用compareTo
,因此没有理由使Comparable
类型。
在这种情况下,Object[]
似乎是最佳选择,可替代Comparable[]
。任何对象都可以进行洗牌。这很普遍。