我正在尝试编写一个接受数组并以不同顺序返回数组的函数。
它适用于 int、double、string、object 或数组中的任何对象。
以下是字符串函数的示例。
public String[] randomize(String[] array, int randomKey)
{
//algorithm here
return newStringArray;
}
对于所有的对象类型,我知道我可以这样做
public Object[] randomize(Object[] array, int randomKey)
{
//algorithm here
return newObjectArray;
}
除了将所有基本类型装箱到一个对象中,还有其他方法可以只编写一次算法,而无需为每个基本数组创建函数吗?是否有适用于对象和基元的通用数组类型?
谢谢
附言由于性能损失不想使用自动装箱。 引自[自动装箱]:http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html
It is not appropriate to use autoboxing and unboxing for scientific computing, or other performance-sensitive numerical code.
最佳答案
遗憾的是泛型在这里不起作用,因为泛型不涵盖基元,但它们涵盖基元数组。原始数组也不会自动装箱到包装器类数组中。这是您必须手动执行的操作,但速度非常慢。一种解决方案是为每个基元提供覆盖,类似于 Arrays.sort 的实现方式。这会产生大量重复代码。另一种解决方案是使用类似于 ArrayList 的 Array 接口(interface),它模拟 Array,获取/设置索引的方法,并为每个基元和对象提供子类。然后您可以使用 Array 接口(interface),而不用关心实际类型是什么。
关于使用对象和基元的 java 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25281409/