使用Arrays.sort,返回空数组

时间:2012-10-25 16:59:52

标签: java arrays sorting

我正在使用Arrays.sort方法对我自己的Comparable个对象进行排序。在我使用sort之前,数组已满,但在我对数组进行排序并将其打印到System之后,没有任何内容正在打印出来。编辑。阵列什么都不打印。不是空行,只是没有。

这是我的方法的代码,它使用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;
}

这里是名为Comparable的{​​{1}}对象的类。

Print

2 个答案:

答案 0 :(得分:1)

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

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

或(如果使用JDK / JRE版本支持):

for (Print p : thing)
{
    System.out.println(p); 
    newQueue.enqueue(p);
}

答案 1 :(得分:-1)

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

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
}