【发布时间】:2020-05-06 22:42:10
【问题描述】:
如果我有一个 ArrayList 书籍,并且我想删除一定数量的书籍,前提是它们不同(使用 equals)。我该如何解决这个问题?
例如,如果我有 3 本书,而我的 quantitytoremove 是 3.. 那么这 3 本书必须被删除。假设quantitytoremove 不能高于数组中不同书籍的数量。
我尝试过这样的事情,但我知道我写的内容存在问题。是否有可用于流的功能或其他可以帮助我的功能?
public Basket removeDifferent(int quantitytoremove) {
int removed=0;
for (int i = 0; i < this.numberBooks && removed<quantitytoremove ; i++) {
for (int j = i+1; j < this.numberBooks && removed<quantitytoremove; j++) {
if (!(this.BooksArray.get(i).equals(this.BooksArray.get(j)))) {
Book Book_i= this.BooksArray.get(i);
Book Book_j= this.BooksArray.get(j);
this.BooksArray.remove(Book_i);
this.BooksArray.remove(Book_j);
removed=removed+2;
this.numberBooks=numberBooks-2;
i=0;j=1;
}
}
}
}
【问题讨论】:
-
改用
Set? -
@MadProgrammer 我需要将其保留为 ArrayList,这可以使用 Set 吗?
-
好吧,您可以使用
ArrayList,将其通过Set,这将只保留对象的非静态实例,然后将其放回ArrayList...所以是的 -
请注意,您应遵循 Java 命名约定:变量名称和方法名称应以驼峰命名。
-
@MadProgrammer 使用 Set 适合这个操作的函数是什么?