码迷,mamicode.com
首页 > 其他好文 > 详细

set调用add报错:

时间:2019-07-05 13:07:27      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:ati   ash   public   val   str   support   extend   ted   add   

Map<String, String> goodsStandMap = new HashMap<>();
goodsStandMap.put("key1", "value1");
goodsStandMap.put("key2", "value2");
Set<String> unitKeySet = goodsStandMap.keySet();

报错:"exceptionTypeName":"java.lang.UnsupportedOperationException","message":null}}}
原因: map.keySet方法返回的是 keySet不是HashSet KeySet extends AbstractSet<K> implements Set<E>
keySet中没有add方法,也好理解,如果map的keyset中添加新的元素,那map中也添加key,那么value呢?
public Set<K> keySet() {
Set<K> ks = keySet;
if (ks == null) {
ks = new KeySet();
keySet = ks;
}
return ks;
}

final class KeySet extends AbstractSet<K> {}
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> {}


set调用add报错:

标签:ati   ash   public   val   str   support   extend   ted   add   

原文地址:https://www.cnblogs.com/ctaixw/p/11137392.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!