仅使用两个属性从排序集中查找和删除元素
Find and delete a element from a sortedset only using two of the atributes
我的表达不是最好的,抱歉
这是我的:
public SortedSet<Tutoria> tutorias;
这是我要执行的操作,它在列表 tutorias 中找到一个 Tutoria,并将其删除。但问题是,它发现它只使用了两个变量,所以它完全忽略了 horaFin 一个。
一直无法弄清楚如何找到与 horaComienzo 和 diaSemana 匹配但不关心其他变量的 Tutoria。
public void borraTutoria(LocalTime horaComienzo, DayOfWeek diaSemana) {
}
这是tutoria的构造函数
public TutoriaImpl(DayOfWeek diaSemana, LocalTime horaComienzo, LocalTime horaFin){
}
这里没有魔法,您可能想把事情弄得太难了。您所要做的就是
- 使用迭代器和 while 或 for 循环遍历 Set
- 在循环内,检查当前正在检查的 Tutorial 项是否具有两个匹配属性
- 如果是,则使用迭代器将其从集合中移除(这部分是关键)。就是这样。
例如
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(...)
方法。
我的表达不是最好的,抱歉
这是我的:
public SortedSet<Tutoria> tutorias;
这是我要执行的操作,它在列表 tutorias 中找到一个 Tutoria,并将其删除。但问题是,它发现它只使用了两个变量,所以它完全忽略了 horaFin 一个。
一直无法弄清楚如何找到与 horaComienzo 和 diaSemana 匹配但不关心其他变量的 Tutoria。
public void borraTutoria(LocalTime horaComienzo, DayOfWeek diaSemana) {
}
这是tutoria的构造函数
public TutoriaImpl(DayOfWeek diaSemana, LocalTime horaComienzo, LocalTime horaFin){
}
这里没有魔法,您可能想把事情弄得太难了。您所要做的就是
- 使用迭代器和 while 或 for 循环遍历 Set
- 在循环内,检查当前正在检查的 Tutorial 项是否具有两个匹配属性
- 如果是,则使用迭代器将其从集合中移除(这部分是关键)。就是这样。
例如
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(...)
方法。