我有一个像这样的Hashtable:
Hashtable<String, String> ht = new Hashtable<String, String>();
ht.put("A", "one");
ht.put("B", "two");
然后我调用它的values()
方法来获取它的值并存储在
像这样的集合对象:
Collection<String> col = ht.values();
现在这个集合对象具有以下值:
one, two.
然后我打电话给col.add(" three");
这次我收到了这个错误:
Exception in thread "main" java.lang.UnsupportedOperationException.
我检查了API:
If a collection refuses to add a particular element for any reason other than that it already contains the element, it must throw an exception (rather than returning false)
我为集合添加的值(“三”)是唯一的,而不是重复的。但我可以对其执行其他操作,例如remove()
和clear()
操作。
无法拨打add()
。为什么不允许添加?
答案 0 :(得分:7)
Hashtable中values()方法返回的集合不支持添加新元素。
来自javadocs:
返回此Hashtable中包含的值的Collection视图。 Collection由Hashtable支持,因此更改为Hashtable 反映在集合中,反之亦然。收藏 支持元素删除(从中删除相应的条目) Hashtable),但不是元素添加。
答案 1 :(得分:0)
除上述答案外,Hashtable还需要键值对。您只是添加值而不是键,因此它会引发异常。