【问题标题】:How to remove elements from Set by iterator with specific conditions?如何通过具有特定条件的迭代器从 Set 中删除元素?
【发布时间】:2020-02-22 10:33:49
【问题描述】:

目前,我有这个代码。显然,不可能将迭代器与 10 进行比较,但是如何获取当前迭代器元素的值呢?或者我应该使用不同的东西?

public static Set<Integer> removeAllNumbersGreaterThan10(Set<Integer> set) {
        Iterator<Integer> it = set.iterator();
        while (it.hasNext()) {
            if (it > 10) {
                it.remove();
            }
        }
        return set;
    }

【问题讨论】:

  • 您通常如何使用Iterator?提示:您的代码当前没有迭代。
  • 整数 i; while (it.hasNext()) {i = it.next() ...
  • 您必须调用next() 来检查下一个元素,如果条件匹配则调用remove()。但是更容易使用set.removeIf(i -&gt; i &gt; 10);。
  • 比这个简单set.removeIf(val -&gt; val &gt; 10); return set;
  • 谢谢大家,我的错,迷失在“下一个”字眼中,以为一定是“当前”。

标签: java iterator set


【解决方案1】:

随便用

if( it.next() >10){
  it.remove()
}

【讨论】:

  • 我认为并发修改发生在 for 循环中,只是为了避免我们使用迭代器!!!
  • 试试看。在迭代期间修改Collection 时会发生并发修改。
  • 谢谢!刚刚迷失在“下一个”这个词中,认为它应该是最新的。
猜你喜欢
  • 2011-02-21
  • 2014-01-04
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2011-03-22
相关资源
最近更新 更多