我可以通过Properties对象枚举时删除元素吗?

时间:2010-05-28 09:43:55

标签: java

我可以在枚举属性时删除元素 对象?

2 个答案:

答案 0 :(得分:5)

Properties implements Map<Object,Object>,因此您可以对其Set.iterator()Map.entrySet()进行迭代,并在某些条目上调用Iterator.remove()。< / p>

    Properties prop = new Properties();
    prop.put("k1", "foo");
    prop.put("k2", "bar");
    prop.put("k3", "foo");
    prop.put("k4", "bar");

    System.out.println(prop); // prints "{k4=bar, k3=foo, k2=bar, k1=foo}"

    Iterator<Map.Entry<Object,Object>> iter = prop.entrySet().iterator();
    while (iter.hasNext()) {
        Map.Entry<Object,Object> entry = iter.next();
        if (entry.getValue().equals("bar")) {
            iter.remove();
        }
    }
    System.out.println(prop); // prints "{k3=foo, k1=foo}"

您希望在remove()上致电iterator()的原因是您不希望导致ConcurrentModificationException

相关问题


许多初学者经常质疑Java中interface的价值:这是展示interface有多强大的一个很好的例子。 Properties implements Map<Object,Object>,所以除非另有说明,否则使用Map可以执行的所有操作都可以使用Properties。上述问题中的信息与您的情况直接相关并直接适用。

答案 1 :(得分:-1)

你试过吗?(对不起,没注意,你已经设置了初学者标志;)

Properties是HashMap的子类,HashMap提供了一个迭代器,它实际上是AbstractMapIterator的子类。这个迭代器实现了remove方法。所以答案是 - 是的,如果你通过Properties对象迭代