首页 > 解决方案 > 遍历标签图并处理它们

问题描述

我写了以下代码:

final Iterator<Entry<Label, Label>> it = dataLabels.entrySet().iterator();
while (it.hasNext()) {
    final Map.Entry<Label, Label> pairs = it.next();
    dataLabels.remove(pairs.getKey());
    pairs.getValue().dispose();
    pairs.getKey().dispose();
}

它遍历标签映射(类型:)Map<Label, Label>并处理每个标签(在将其从映射中删除之后)。

我觉得这段代码没有达到我的预期。我认为它在第一个循环之后停止迭代(尝试添加打印的消息以查看行为)。

代码是否符合我的预期(处理所有标签)?如果不是,如何解决?

标签: javadictionaryswt

解决方案


如果你想一个一个删除试试这个,

    Iterator<Map.Entry<Label,Label>> i = dataLabels.entrySet().iterator();
    while (i.hasNext()) {
       Map.Entry<String,String> entry = i.next();
       // Do something
       i.remove();
    }

否则您可以使用清除整个地图dataLabels.clear()

通过使用dataLabels.clear(),您可以重复使用dataLabels地图。

如果您不需要重用它,请将其设置为null

dataLabels = null;

推荐阅读