最近学习并发容器+遇到tomcat的ParameterMap,不由想自己实现一个可以有一个key值对应多个value值的Map。借用ConcurrentHashMap的实现思想,我在一个Map的Value里边一个存放一个新的Map,模拟ConcurrentHashMap的segment来实现上面的需求。代码如下:
public static void main(String[] args) {
ParameterMap<String,String> strMap = new ParameterMap<String,String>();
strMap.put("key_1", "value_1");
strMap.put("key_2", "value_2");
ParameterMap<String,String> strMap2 = new ParameterMap<String,String>();
strMap2.put("key_1", "value_3");
strMap2.put("key_2", "value_4");
ParameterMap<String,ParameterMap<String,String>> mapMap= new ParameterMap<String,ParameterMap<String,String>>();
mapMap.put("strMap", strMap);
mapMap.put("strMap2", strMap2);
Set<String> strSet = mapMap.keySet();
Iterator<String> setIter = strSet.iterator();
while(setIter.hasNext()) {
String key = setIter.next();
ParameterMap<String,String> strMap_1 = mapMap.get(key);
Set<String> strSet_1 = strMap_1.keySet();
Iterator<String> setIter_1 = strSet_1.iterator();
while(setIter_1.hasNext()) {
String str = setIter_1.next();
if("key_1".equals(str)) {
System.err.println(str+"---"+strMap_1.get(str));
}
}
}
}
输出:
key_1---value_1
key_1---value_2
做得很粗糙,仅仅是表面上实现了初始的效果。当然,以上当做抛砖引玉吧,欢迎各位路过的大佬前来添砖加瓦。