仅使用两个属性从排序集中查找和删除元素

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(...) 方法。