gpt4 book ai didi

java - 如果我的 Collection 中还没有某本书,如何将其添加到其中? (java)

转载 作者:行者123 更新时间:2023-11-30 07:34:49 24 4
gpt4 key购买 nike

我创建了一个 BookCollection 类,用于保存 Books(我创建的另一个类)。我正在尝试将两个 BookCollections 合并在一起,以制作 collection3。如果他们有重复的书,我会添加他们的库存并采取最低价格。如果它们不是重复的,我会将这本书添加到 Collection3 中。我了解如何处理重复的书籍,但我的循环不适用于独特的书籍。这是我的代码,我认为您可以在不查看涉及的所有其他代码的情况下理解我的目标:

 public static BookCollection merge(BookCollection collection1, 
BookCollection collection2){
//Make sure the collection is big enough
int collection1Size = collection1.getSize();
int collection2Size = collection2.getSize();
int collection3Size = collection1Size + collection2Size;
BookCollection collection3 = new BookCollection(collection3Size);

//loop through collection one and add it to collection 3
for (int i = 0; i < collection1Size; i++){
Book collection1Book = new Book(collection1.objectAt(i));
collection3.addBook(collection1Book);
}

//loop through collection two and add certain books to collection 3

for (int q = 0; q < collection3Size; q++){
if (collection3.objectAt(q) != null){
Book collection3Book = new Book(collection3.objectAt(q));
for (int j = 0; j < collection2Size; j++){
if (collection2.objectAt(j) != null){
Book collection2Book = new Book(collection2.objectAt(j));

// if the book at collection 2 is the same as a book already in collection 3
if (collection2Book.getIsbn().equals(collection3Book.getIsbn())){
String BookISBN = collection2Book.getIsbn();

//Handles the price of the book
double price1 = collection2Book.getPrice();
double price2 = collection3Book.getPrice();
if (price1 > price2){
collection3.changePrice(BookISBN, price2);
}
if (price1 < price2){
collection3.changePrice(BookISBN, price1);
}
// Handles the stock of the book
int stock1 = collection2Book.getStock();
collection3.changeStock(BookISBN, stock1);
}

// adds the rest of the new books from collection 2 to collection
if (!(collection2Book.getIsbn().equals(collection3Book.getIsbn()))){
if (collection3.getSize() < collection3Size){
collection3.addBook(collection2Book);
}

}
}
}
}
}
return collection3;
}

首先,我将所有书籍从 Collection1 添加到 Collection3。然后我创建循环来检查 Collection2 和 Collection3 中是否有重复的书籍。伪代码很好,我只是不知道如何让我的程序看到 Collection2 中的一本书是唯一的。谢谢!

最佳答案

这是您的代码所采用的方法:

for each B3 in collection 3
for each B2 in collection 2
if B2 and B3 are the same book, then make some changes to the book
if B2 and B3 are not the same book, then add it
end
end

这并没有达到你想要的效果。为了判断集合 2 中的一本书是否是唯一的,您必须首先将该书与所有现有书籍进行比较。只有当你读完集合3中的所有书籍后,你才会知道是否应该将其添加为新书。您的代码不会这样做 - 因为“不是同一本书”逻辑出现得太早了。

正确的方法是这样的

for each B2 in collection 2
for each B3 in collection 3
if B2 and B3 are the same book, then make some changes to the book--and make a note that B2 has been found
end
if B2 has not been found then add it
end

请注意,最后一次检查必须在内循环之外。

关于java - 如果我的 Collection 中还没有某本书,如何将其添加到其中? (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35547133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com