首页 文章

从 Map 中删除元素

提问于
浏览
0

如何在 Map 上进行迭代,逐个删除元素,然后在删除每个元素后调用一个函数?

让我说我有释放功能

final HashMap<int, bool> _instances = new HashMap<int, bool>();

  void release(dynamic instance) {
    if (_instances[instance.hashCode] != null) {
      _releaseHashCode(instance.hashCode);
      _dispatcher.dispatchEvent(PinEvent.release);
    }
  }

  void _releaseHashCode(int hashCode) => _instances.remove(hashCode);

现在我想创建 releaseAll() ,它将为 Map 中的每个元素调用 _releaseHashCode ,从而释放它并调度释放事件 .

void releaseAll() {
    ...
  }

1 回答

  • 0

    这就是我做到的

    void releaseAll() {
        var tempMap = new HashMap<int, bool>()..addAll(_instances);
        tempMap.forEach((int hashCode, bool value) {
          _releaseHashCode(hashCode);
          _dispatcher.dispatchEvent(PinEvent.release);
        });
        tempMap.clear();
        tempMap = null;
      }
    

相关问题