如何重载LinkedList的add方法?

时间:2012-10-02 01:13:21

标签: java linked-list

我必须重载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。任何人都可以指出我哪里出错并给我一些解决方法吗?

1 个答案:

答案 0 :(得分:3)

我认为您实际需要的数据结构是PriorityQueue

就你的代码中的错误而言,我很确定问题是当前i.add(order)会在 之后插入新元素 >元素,而要获得您想要的订单,您需要在 更大的元素之前插入