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

时间:2015-02-18 18:00:55

标签: java iterator set

我的表达不是最好的,对不起。

这就是我所拥有的:

public SortedSet<Tutoria> tutorias;

这是我尝试制作的操作,它会在列表中找到Tutoria,然后将其删除。但事实是,它发现它只使用了两个变量,所以它完全忽略了horaFin变量。

Haven已经能够找到如何找到与horaComienzo和diaSemana相匹配但不关心其他变量的Tutoria。

public void borraTutoria(LocalTime horaComienzo, DayOfWeek diaSemana) {
    }

这是tutoria的构造函数。

public TutoriaImpl(DayOfWeek diaSemana, LocalTime horaComienzo, LocalTime horaFin){
    }

1 个答案:

答案 0 :(得分:0)

这里没有任何魔力,你可能会试图为自己制造太难的东西。你所要做的就是

  • 使用其迭代器和一段时间或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(...)方法。