Java 使用Arrays.sort,返回空数组

Java 使用Arrays.sort,返回空数组,java,arrays,sorting,Java,Arrays,Sorting,我正在使用array.sort方法对我自己的可比较的对象的数组进行排序。在使用sort之前,数组已满,但在对数组进行排序并将其打印到系统后,将不会打印任何内容。编辑阵列根本不打印任何内容。不是空行,什么都没有 下面是我使用排序的方法的代码: public LinkedQueue<Print> arraySort(LinkedQueue<Print> queue1) { Print[] thing = new Print[queue1.size()]; Li

我正在使用
array.sort
方法对我自己的
可比较的
对象的数组进行排序。在使用sort之前,数组已满,但在对数组进行排序并将其打印到系统后,将不会打印任何内容。编辑阵列根本不打印任何内容。不是空行,什么都没有

下面是我使用排序的方法的代码:

public LinkedQueue<Print> arraySort(LinkedQueue<Print> queue1)
{
    Print[] thing = new Print[queue1.size()];
    LinkedQueue<Print> newQueue = new LinkedQueue<Print>();

    for(int i = 0; i <queue1.size(); i++)
    {
        Print ob = queue1.dequeue();
        thing[i] = ob;
        System.out.println(thing[i]);   //printing works here
    }

    Arrays.sort(thing);

    for(int j = 0;j<thing.length-1;j++)
    {
        System.out.println(thing[j]);   //printing does not work here 
        newQueue.enqueue(thing[j]);
    }

    return newQueue;
}

上次的
for
循环不会打印数组中的最后一个元素。如果数组只有一个元素,那么它根本不会打印任何内容。改为:

for (int j = 0; j < thing.length; j++) //clean code uses spaces liberally :)
{
    System.out.println(thing[j]);
    newQueue.enqueue(thing[j]);
}

我希望问题在于代码的这一部分

for(int i = 0; i <queue1.size(); i++)
{
    Print ob = queue1.dequeue();
    thing[i] = ob;
    System.out.println(thing[i]);   //printing works here
}

为什么不打印最后一个元素
for(int j=0;jAlso,“打印在这里不起作用”到底意味着什么?打印的是什么?值错误吗?您可以使用数组.toString(thing)
打印,因为您在
print
类中重写了
toString
。并告诉我们输出的确切内容。@Jonsket“在我对数组进行排序并将其打印到系统后,没有任何内容被打印出来。”此外,您可以用一个
来替换
compareTo()
实现,返回this.numPages-other.numPages;
谁说
LinkedQueue
有一个
.isEmpty()
method?LinkedQueue到底是什么?据我所知,Java中没有标准的LinkedQueue实现,InterWeb中有很多不同的自定义实现,尤其是在大学网站上。@ADTC我想是一个使用LinkedList实现的非标准队列。如果是这样的话,当然可以d扩展实现以包含isEmpty方法。@NullUserException:对不起,我误解了。您能告诉我如何确保队列1的所有元素都被插入到对象中吗?“干净的代码大量使用空格。”“这确实是个人偏好的问题。我认为
int j=0
很难看。谢谢!这就是问题所在。@bitva感谢接受。很高兴知道我的答案对你有帮助。请看一下imran的答案。如果
queue1
可以通过
dequeue()
方法更改,则
size()返回的值
在循环迭代过程中可能会发生更改,从而导致不需要的结果(不会迭代队列中的所有对象)。您可以通过将原始大小存储在变量中并将其用于循环,或者在LinkedQueue实现中创建一个isEmpty方法来解决此问题。@bitva:那么您只使用了一个元素数组吗?如果从。。。
for (Print p : thing)
{
    System.out.println(p); 
    newQueue.enqueue(p);
}
for(int i = 0; i <queue1.size(); i++)
{
    Print ob = queue1.dequeue();
    thing[i] = ob;
    System.out.println(thing[i]);   //printing works here
}
for(int i = 0; !queue1.isEmpty() ; i++)
{
    Print ob = queue1.dequeue();
    thing[i] = ob;
    System.out.println(thing[i]);   //printing works here
}