我有两个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;
}
答案 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()方法。