我可以在枚举属性时删除元素 对象?
答案 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对象迭代。