java - 仅使用其中两个属性从排序集中查找并删除元素

标签 java iterator set

我的表达不是最好的,抱歉。

这就是我所拥有的:

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/

相关文章:

java - 了解饥饿自由和无等待方法

java - 使用jsoup获取图片url

c++ - 初始化 std::map 迭代器类成员

sql - 在 PostgreSQL 中是否有处理无序数组(集)的标准方法?

Java - 文件未找到异常 - 共享位置缺少斜杠

java - 如何使用 Lombok 和 Spring Boot 访问 JPA 实体的 Builder()?

java - 将指定对象从一个 ArrayList 复制到另一个

C++ 模板和 STL vector 问题

sql - 比较具有大量数据的两组以找到相同的值

c# - 将字符串列表转换为相应的int c#