gpt4 book ai didi

java - 如何在HashMap中只获取一个键为 "similar"的键

转载 作者:行者123 更新时间:2023-12-02 05:46:02 29 4
gpt4 key购买 nike

我有一个由字符串主机名和列表服务列表定义的对象“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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com