【发布时间】:2014-07-26 18:22:22
【问题描述】:
我有一个由 String hostName 和 List serviceList 定义的对象“ObjectName”。
两个服务列表可能包含一个或多个相同的字符串。
每个字符串都是一个方法的名称。不能有同名的方法做不同的事情,也不能有不同名字的方法做同样的事情。
每个 ObjectName 都与一个唯一的整数配对。然后我创建一个
Map<ObjectName, Integer> objectPorts = new HashMap<>();
我在这个地图中添加了两个节点,它们的 serviceList 中有一个重复的字符串
示例:
objectName1的serviceList有{method1,method2,method3},而objectName2的serviceList有{method4,method2,method5}
objectPorts 包含两次字符串“method2”
现在我想在地图中搜索“method2”并执行method2的代码。我希望代码只执行一次,而不是“method2”的每个条目。
如何做到这一点?
我正在使用此代码:(编辑:添加开关部分以进行澄清)
public long executeMethod(String methodName, int n1, int n2) throws Exception {
long result = 0;
for(Map.Entry<Object, Integer> pair : something.entrySet()) {
List<String> methods = pair.getkey().serviceList;
if(methods.contains(methodName) {
switch(methodName) {
case "method1":
result = arithmeticClient.method1(n1, n2);
break;
case "method2":
result = arithmeticClient.method2(n1, n2);
break;
case "method3":
result = arithmeticClient.method3(n1, n2);
break;
case "method4"
result = arithmeticClient.method4(n1, n2);
break;
}
}
return result;
}
但它为地图中存在的每个 methodName 实例执行 methodName 的代码,所以这不是我想要的。怎么修改?
【问题讨论】: