基于Java

时间:2017-09-09 10:13:29

标签: java sorting object linked-list

我有两个LinkedLists:newLinkedList和oldLinkedList,都包含BID类对象。以下是我的BID课程:

    public class Bid {

    private int quantity;
    private double bidPrice;

   public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public double getBidprice() {
        return bidPrice;
    }

    public void setBidprice(double bidPrice) {
        this.bidPrice = bidPrice;
    }
}

现在我必须根据BID类的价格变量创建一个新的LinkedListlist,其中包含newLinkedList和oldLinkedList的已排序元素。 如果我在LinkedList中获得相同的价格,那么我必须保留newLinkedList BID类对象并删除旧的。

这意味着新的LinkedList必须包含根据价格变量排序的Bid类对象。

这是我的主要功能:

 public static void main(String[] args) throws InterruptedException, IOException {

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter size of linkedlist 1 ");
    int size1 = Integer.parseInt(br.readLine());
    System.out.println("Enter size of linkedlist 2 ");
    int size2 = Integer.parseInt(br.readLine());
    LinkedList<Bid> oldLinkedList= addElementsToList(size1);
    LinkedList<Bid> newLinkedList= addElementsToList(size2);

    /*
          SORT BOTH THE LINKED LISTS HERE
    */

}

public static LinkedList<Bid> addElementsToList(int size) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    LinkedList<Bid> bidList = new LinkedList<Bid>();

    for (int i = 0; i < size; i++) {
        Bid bid = new Bid();
        System.out.println("Enter bid price of Object " + i);
        bid.setBidprice(Double.parseDouble(br.readLine()));
        System.out.println("Enter bid quantity of Object " + i);
        bid.setQuantity(Integer.parseInt(br.readLine()));
        bidList.add(bid);
    }
  return bidList;
}

2 个答案:

答案 0 :(得分:1)

也许这就是你想要的,对于oldList中的每个Bid,检查它是否已经存在于newList中。如果存在,则不执行任何操作,否则将其添加到newList,并对最后一个newList进行排序。你可以测试它。

注意:我不确定你是否真的想比较两个双倍价格。

    boolean containsSamePrice(LinkedList<Bid> list, double price) {
        for (Bid bid : list) {
            if (bid.getBidprice() == price) {
                return true;
            } 
        }
        return false;
    }

LinkedList<Bid> mergeAndSort(LinkedList<Bid> newLinkedList, LinkedList<Bid> oldLinkedList) {
    for (Bid oldBid : oldLinkedList) {
        if (!containsSamePrice(newLinkedList, oldBid.getBidprice())) {
            newLinkedList.add(oldBid);
        }
    }
    Comparator<Bid> comparator = new Comparator<Bid>() {
        @Override
        public int compare(Bid o1, Bid o2) {
            if (o1.getBidprice() < o2.getBidprice())
                return -1;
            if (o2.getBidprice() == o2.getBidprice())
                return 0;
            return 1;
        }
    };
    Collections.sort(newLinkedList, comparator);
    return newLinkedList;
}

答案 1 :(得分:0)

您可以在Bid类中实现Comparator接口,并使用Collections.sort()方法。