gpt4 book ai didi

java - 如何比较两个数组字符串的每个位置

转载 作者:行者123 更新时间:2023-12-01 12:33:30 25 4
gpt4 key购买 nike

我是java新手,遇到这个问题;我正在使用来自 android 的网络服务,我发送一个请求,并得到一个格式如下字符串的答案:1-0,2-0,3-0,4-0,5-0,6-0, 7-0,8-0,12-0,13-0 其中“-”之前的数字表示我的按钮编号,“-”之后的数字表示按钮状态。我把这个字符串分成一个数组,如下所示:

String  buttons = "1-0,2-0,3-0,4-0,5-0,6-0,7-0,8-0,13-0,14-0";
String[] totalButtons = buttons.split(",");

然后我提出一个新的请求来获取按钮的状态,我得到了这个

String status = "1-0,2-0,3-2,4-0,5-4,6-0,7-4,8-0,9-2,10-1,13-4,14-2";
String[] statusButtons = status.split(",");

按钮的数量始终相同;在本例中为 10 个按钮。我遇到的问题是如何比较两个数组的每个元素,如果它们可以每两秒更改一次状态,并且我收到比第一次更多的按钮,并且我必须使用新值更改它们的状态。例如,数组的第一个元素等于第二个数组的第一个元素,因此没有问题,但在这种情况下,第一个数组在第二个数组中没有两个元素 9-2,10- 1 所以它们应该被删除。最终结果应该是这样的

String  buttons =     "1-0,2-0,3-0,4-0,5-0,6-0,7-0,8-0,13-0,14-0";
String status = "1-0,2-0,3-2,4-0,5-4,6-0,7-4,8-0,9-2,10-1,13-4,14-2";
String finalButtons = "1-0,2-0,3-2,4-0,5-4,6-0,7-4,8-0,13-4,14-2";

最佳答案

这是一个帮助您入门的想法;

Map<String,String> buttonStatus = new HashMap<String,String>();

for (String button : totalButtons) {
String parts[] = button.split("-");
buttonStatus.put(parts[0], parts[1]);
}

for (String button : statusButtons) {
String parts[] = button.split("-");
if (buttonStatus.containsKey(parts[0])) {
buttonStatus.put(parts[0], parts[1]);
}
// Java 8 has a "replace" method that will change the value only if the key
// already exists; unfortunately, Android doesn't support it
}

结果将是一个映射,其键取自原始 totalButtons ,其值取自 statusButtons如果存在的话。您可以浏览Map中的键和值。得到结果,但结果不按顺序排列;如果您希望它们的顺序与 totalButtons 相同,浏览totalButtons再次使用buttonStatus.get获取每个值。

Map 的 javadoc是 here .

关于java - 如何比较两个数组字符串的每个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25752393/

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