在Java中对元素的通用数组进行排序
我的Java程序中有一个泛型类,类型可以是Double或Integer。我需要编写一个函数,首先需要对泛型类型的值数组进行排序。我遇到以下异常,我不确定如何修复它。我将感谢任何帮助在Java中对元素的通用数组进行排序,java,sorting,generics,Java,Sorting,Generics,我的Java程序中有一个泛型类,类型可以是Double或Integer。我需要编写一个函数,首先需要对泛型类型的值数组进行排序。我遇到以下异常,我不确定如何修复它。我将感谢任何帮助 Exception in thread "main" java.lang.NullPointerException at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290) at java.u
Exception in thread "main" java.lang.NullPointerException
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:157)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:472)
at datastructures.CircularBuffer.getMedian(CircularBuffer.java:98)
at test.CircularBufferTests.test4(CircularBufferTests.java:67)
at test.CircularBufferTests.main(CircularBufferTests.java:13)
这是我的密码:
public class CircularBuffer<T extends Number> {
private T[] array;
public CircularBuffer(int n){
array = (T[])new Number[n];
}
public double getMedian(int size){
...
Arrays.sort(array);
...
}
}
公共类循环缓冲{
私有T[]数组;
公共通告缓冲区(国际北){
数组=(T[])新数字[n];
}
公共双进位(整数大小){
...
数组。排序(数组);
...
}
}
谢谢 显然,这里没有足够的代码可以理解,但是对于您将T传递给的ComparableTimSort(异常实际上来自)类,并不是所有的T类型(数字类)实现Comparable接口以检查这是否是您的问题尝试用Comparable cast传递T显然这里没有足够的代码可以理解,但是对于传递T的ComparableTimSort(异常实际上来自)类,而不是传递T的所有T类型(数字类)实现Comparable接口以检查这是否是您的问题尝试用Comparable cast传递T显然这里没有足够的代码可以理解,但是对于传递T的ComparableTimSort(异常实际上来自)类,而不是传递T的所有T类型(数字类)实现Comparable接口以检查这是否是您的问题尝试用Comparable cast传递T显然这里没有足够的代码可以理解,但是对于传递T的ComparableTimSort(异常实际上来自)类,而不是传递T的所有T类型(数字类)实现Comparable接口以检查这是否是您的问题尝试使用Comparable cast传递T您必须编写自定义比较器才能使用Array.sort()进行排序
为了使用array.sort()进行排序,必须编写一个自定义比较器
为了使用array.sort()进行排序,必须编写一个自定义比较器
为了使用array.sort()进行排序,必须编写一个自定义比较器 你能行
Arrays.sort(array, new Comparator<T>{
@Override
public int compare(T arg0, T arg1)
{
...
}
});
Arrays.sort(数组,新比较器{
@凌驾
公共整数比较(T arg0,T arg1)
{
...
}
});
public class CircularBuffer<T extends Number & Comparable<T>>
公共类循环缓冲
Arrays.sort(array, new Comparator<T>{
@Override
public int compare(T arg0, T arg1)
{
...
}
});
Arrays.sort(数组,新比较器{
@凌驾
公共整数比较(T arg0,T arg1)
{
...
}
});
public class CircularBuffer<T extends Number & Comparable<T>>
公共类循环缓冲
Arrays.sort(array, new Comparator<T>{
@Override
public int compare(T arg0, T arg1)
{
...
}
});
Arrays.sort(数组,新比较器{
@凌驾
公共整数比较(T arg0,T arg1)
{
...
}
});
public class CircularBuffer<T extends Number & Comparable<T>>
公共类循环缓冲
Arrays.sort(array, new Comparator<T>{
@Override
public int compare(T arg0, T arg1)
{
...
}
});
Arrays.sort(数组,新比较器{
@凌驾
公共整数比较(T arg0,T arg1)
{
...
}
});
public class CircularBuffer<T extends Number & Comparable<T>>
公共类循环缓冲
这样,您就可以更具体地限制T。这称为“多个边界”您能提供一个示例来演示此行为吗?
array
的元素为null
。不可能。如果要包含null
请编写一个自定义的比较器来处理它。检查数组中的项是否为null。是否可以共享更多代码?不可能follow@AmirAfghani可比TIMSORT.COUNTRUND和MAKEASSENDING的
?这会告诉OP什么?你能提供一个例子来演示这个行为吗?array
的元素是null
。不可能。如果要包含null
请编写一个自定义的比较器来处理它。检查数组中的项是否为null。是否可以共享更多代码?不可能follow@AmirAfghani可比TIMSORT.COUNTRUND和MAKEASSENDING的
?这会告诉OP什么?你能提供一个例子来演示这个行为吗?array
的元素是null
。不可能。如果要包含null
请编写一个自定义的比较器来处理它。检查数组中的项是否为null。是否可以共享更多代码?不可能follow@AmirAfghani可比TIMSORT.COUNTRUND和MAKEASSENDING的
?这会告诉OP什么?你能提供一个例子来演示这个行为吗?array
的元素是null
。不可能。如果要包含null
请编写一个自定义的比较器来处理它。检查数组中的项是否为null。是否可以共享更多代码?不可能follow@AmirAfghani可比TIMSORT.COUNTRUND和MAKEASSENDING的
?这会告诉OP什么?当我第一次回顾这篇文章时,我不明白你为什么要把两个不同的答案复制成一个新的答案(通常是不赞成的)。然后我检查了一下,你实际上提供了重要的额外信息,所以你得到了+1。当我第一次审查这篇文章时,我不明白你为什么要把两个不同的答案复制到一个新答案中(通常不赞成)。然后我检查了一下,你实际上提供了重要的额外信息