我的表达不是最好的,抱歉。
这就是我所拥有的:
public SortedSet<Tutoria> tutorias;
这就是我想要进行的操作,它在教程列表中找到一个教程,然后将其删除。但问题是,它发现它只使用了其中两个变量,因此它完全忽略了 horaFin 变量。
无法弄清楚如何找到与 horaComienzo 和 diaSemana 匹配但不关心其他变量的教程。
public void borraTutoria(LocalTime horaComienzo, DayOfWeek diaSemana) {
}
这是教程的构造函数。
public TutoriaImpl(DayOfWeek diaSemana, LocalTime horaComienzo, LocalTime horaFin){
}
最佳答案
这里没有魔法,你可能想让事情变得对自己来说太难了。您所要做的就是
- 使用迭代器和 while 或 for 循环迭代 Set
- 在循环内,检查当前正在检查的教程项目是否具有两个匹配的属性
- 如果是,则使用迭代器将其从集合中删除(这部分是关键)。就是这样。
例如
Iterator<Foo> iterator = myFooSet.iterator();
while (iterator.hasNext()) {
Foo myFoo = iterator.next(); // get current item
// check if current item's properties match two searched for
// properties
if (myFoo.getBar.equals(someBar) && myFoo.getBaz.equals(someBaz)) {
iterator.remove();
}
}
此外,使用 for 循环的等效代码:
for (Iterator<Foo> iterator = myFooSet.iterator(); iterator.hasNext();) {
Foo myFoo = iterator.next(); // get current item
// check if current item's properties match two searched for
// properties
if (myFoo.getBar.equals(someBar) && myFoo.getBaz.equals(someBaz)) {
iterator.remove();
}
}
当然,如果要匹配的两个属性中的任何一个是基元,那么您将使用 ==
运算符,而不是 equals(...)
方法。
关于java - 仅使用其中两个属性从排序集中查找并删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28590602/