作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个由字符串主机名和列表服务列表定义的对象“ObjectName”。
两个 serviceList 可能包含一个或多个相同的字符串。
每个字符串都是一个方法的名称。不能有相同名称的方法执行不同的操作,也不能有不同名称的方法执行相同的操作。
每个 ObjectName 都与一个唯一的整数配对。然后我创建一个
Map<ObjectName, Integer> objectPorts = new HashMap<>();
我向该映射添加了两个节点,其 serviceList 中具有重复的字符串
示例:
objectName1的serviceList有{method1, method2, method3},而objectName2的serviceList有{method4, method2, method5}
objectPorts 包含字符串“method2”的两倍
现在我想在 map 中搜索“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 的代码,所以这不是我想要的。我该如何修改它?
最佳答案
据我了解,您需要做的就是在 for 循环执行后跳出它。所以像这样——
for(Map.Entry<Object, Integer> pair : something.entrySet()) {
List<String> methods = pair.getkey().serviceList;
if(methods.contains(methodName) {
does something
break;
}
}
break 实际上是一个 java 关键字,它可以“打破”当前所在的循环。因此,在代码“执行某些操作”之后添加它意味着循环将退出,并且代码只会执行一次。
关于java - 如何在HashMap中只获取一个键为 "similar"的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24065595/
我是一名优秀的程序员,十分优秀!