0

我必须重载 LinkedList 的 add 方法,以便它按订单号(整数)按顺序添加新的 CustomerOrders。这是我到目前为止的代码。

public boolean add(CustomerOrder order)
{

    ListIterator<CustomerOrder> i = this.listIterator();

    if(!(i.hasNext())) //there are no orders in the list
    {
        i.add(order);
        return true;
    }


    while(i.hasNext())
    {
        int compare = order.compareTo(i.next(), 1);//compareTo returns 0 if the orders have the same order number, 1 if order greater order num, -1 if order has lower order num

        if(compare == 0) //can't add the order if another order has the same order num
        {
            return false;
        }
        else
        {
            if(compare == 1) //order is greater than i.next()
            {
                i.add(order); //my guess is that the problem is here
                return true;
            }
        }
    }

    return false;
}

当我输入订单号为 1 到 5 的订单时,列表为 1、5、4、3、2。我想要的是列表为 1、2、3、4、5。谁能指出我哪里出错并给我一些修复它的提示?

4

1 回答 1

3

我认为您真正想要的数据结构是PriorityQueue

就您的代码中的错误而言,我很确定问题是当前将在较小的元素之后i.add(order)插入新元素,而要获得您想要的顺序,您需要在较大的元素之前插入它。

于 2012-10-02T01:15:36.463 回答