1

我有一个像这样的哈希表:

Hashtable<String, String> ht = new Hashtable<String, String>();
 ht.put("A", "one");
 ht.put("B", "two");

然后我调用它的values()方法来获取它的值并存储在 Collection 对象中,如下所示:

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()。为什么不允许添加?

4

2 回答 2

7

Hashtable 中 values() 方法返回的集合不支持添加新元素。

javadocs

返回此 Hashtable 中包含的值的 Collection 视图。Collection 由 Hashtable 支持,因此对 Hashtable 的更改会反映在 Collection 中,反之亦然。Collection 支持元素删除(从 Hashtable 中删除相应的条目),但不支持元素添加

于 2012-06-05T06:37:43.270 回答
0

除了上面的答案,Hashtable 还需要键值对。您只是在添加值而不是键,因此它会引发异常。

于 2012-06-05T06:56:44.023 回答