Java 创建新的通用数组以实现可比较的
是否有可能创建一个新的通用数组来实现可比性 我有点像:Java 创建新的通用数组以实现可比较的,java,generics,comparable,Java,Generics,Comparable,是否有可能创建一个新的通用数组来实现可比性 我有点像: public class MyClass<T extends Comparable<T>> { ... public T[] myAlgorithm( T[] list1, T[] list2 ) { T[] newList = (T[]) new Object( ... ); if ( list1[0].compareTo( list2[0] ) < 0 )
public class MyClass<T extends Comparable<T>> {
...
public T[] myAlgorithm( T[] list1, T[] list2 ) {
T[] newList = (T[]) new Object( ... );
if ( list1[0].compareTo( list2[0] ) < 0 ) {
...
}
return newList;
}
}
我创建了对象类的一个新实例(所有类的父类),并将其转换为参数化类型以获得参数化数组。我从其他渠道了解到,这是一种方法。但我希望它能像我的算法在代码中显示的那样使用comparable,我不想使用集合
有没有这样的方法?一种方法如下(未经测试的代码):
公共类MyClass{
公共T[]myAlgorithm(T[]列表1,T[]列表2){
@抑制警告(“未选中”)
T[]newList=(T[])Array.newInstance(list1[0].getClass(),list1.length);
for(t1:list1){
对于(t2:list2){
如果(t1.与(t2)==0相比){
//待办事项
}
}
}
返回newList;
}
}
有很多方法可以做到这一点,但你应该认真考虑这是否是个好主意。为什么不想使用集合?请看@Chthonic-啊,对不起,那是个打字错误。当我累了的时候不应该编码。@drewmore-试图在算法上获得一个非常小的性能提升。其他人说这有帮助。我同意这篇文章,但通常我不太担心优化。我正在比较几种语言中的优化合并排序算法,这就是为什么我试图获得较小的性能优势。@Chthonic-对不起,我没有尝试比较列表,我只是厌倦了,把示例代码弄乱了。谢谢你,希拉克。我之前尝试过使用Array.newInstance
,但不起作用。我想我不应该太累。
[Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable
public class MyClass<T extends Comparable<T>> {
public T[] myAlgorithm( T[] list1, T[] list2 ) {
@SuppressWarnings("unchecked")
T[] newList = (T[])Array.newInstance(list1[0].getClass(), list1.length);
for (T t1 : list1) {
for (T t2 : list2) {
if(t1.compareTo(t2)==0) {
//TODO
}
}
}
return newList;
}
}