public KeySetView<K,V> keySet(){
KeySetView<K,V> ks;
if ((ks = keySet)!=null) return ks;
return keySet = new KeySetView<K,V>(this,null);}// add
public boolean add(K e){
V v;
if ((v = value)==null)
throw new UnsupportedOperationException();
return map.putVal(e, v,true)==null;}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
所以我们只能通过如下的方式使用。
ConcurrentHashMap<Integer,String> numbersMap = new ConcurrentHashMap<>();Set<Integer> numbersSet = numbersMap.keySet();
numbersMap.put(1,"One");
numbersMap.put(2,"Two");
numbersMap.put(3,"Three");
System.out.println("Map before remove: "+ numbersMap);
System.out.println("Set before remove: "+ numbersSet);
numbersSet.remove(2);
System.out.println("Set after remove: "+ numbersSet);
System.out.println("Map after remove: "+ numbersMap);
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
输出结果如下。
Map before remove:{1=One,2=Two,3=Three}Set before remove:[1,2,3]Set after remove:[1,3]
Map after remove:{1=One,3=Three}
public KeySetView<K,V> keySet(V mappedValue){
if (mappedValue ==null)
throw new NullPointerException();
return new KeySetView<K,V>(this, mappedValue);}
1.
2.
3.
4.
5.
所以我们可以通过如下的方式使用。
ConcurrentHashMap<Integer,String> numbersMap = new ConcurrentHashMap<>();Set<Integer> numbersSet = numbersMap.keySet("SET-ENTRY");
numbersMap.put(1,"One");
numbersMap.put(2,"Two");
numbersMap.put(3,"Three");
System.out.println("Map before add: "+ numbersMap);
System.out.println("Set before add: "+ numbersSet);
numbersSet.addAll(asList(4,5));
System.out.println("Map after add: "+ numbersMap);
System.out.println("Set after add: "+ numbersSet);
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
输出结果如下:
Map before add:{1=One,2=Two,3=Three}Set before add:[1,2,3]
Map after add:{1=One,2=Two,3=Three,4=SET-ENTRY,5=SET-ENTRY}Set after add:[1,2,3,4,5]