首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何比较每个位置的两个数组字符串

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

Stack Overflow用户
提问于 2014-09-09 19:42:25
回答 3查看 1.2K关注 0票数 0

我对java很陌生,而且我有这个问题;我正在使用一个来自android的new服务,在那里我发送一个请求,并得到一个类似于以下字符串的答复:1-0,2-0,3-0,4-0,5-0,6-0,7-0,8-0,12-0,13-0,其中"-“之前的数字表示我的按钮的编号,而在"-”之后的数字表示按钮的状态。我将此字符串拆分为如下数组:

代码语言:javascript
运行
复制
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(",");

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

代码语言:javascript
运行
复制
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,因此应该删除它们。最终的结果应该是这样

代码语言:javascript
运行
复制
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";
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-09 19:59:15

以下是一个让你开始的想法;

代码语言:javascript
运行
复制
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是这里

票数 1
EN

Stack Overflow用户

发布于 2014-09-09 19:50:04

我会再次将每个值分开,然后比较这些值。

例:

代码语言:javascript
运行
复制
String[] doubleSplit = totalButtons[index].split("-"); // "1-0" -> {"1", "0"}
票数 0
EN

Stack Overflow用户

发布于 2014-09-09 21:04:04

代码语言:javascript
运行
复制
import java.util.HashMap;
import java.util.Map;

/**
 * @author Davide
 */
public class test {
    static Map map;

    public static void main(String[] args) {
        // init value
        String buttons = "1-0,2-0,3-0,4-0,5-4,6-0,7-0,8-0,13-0,14-0";
        String[] keys = buttons.split("(-[0-9]*,*)");

        init(keys);

        // new value
        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(",");

        update(statusButtons);
        print();
    }

    public static void init(String[] keys) {
        map = new HashMap<Integer, Integer>();
        for (String k : keys) {
            map.put(Integer.valueOf(k), 0);
        }
    }

    public static void update(String[] statusButtons) {
        for (String state : statusButtons) {
            String[] split = state.split("-");
            int k = Integer.valueOf(split[0]);
            int v = Integer.valueOf(split[1]);
            if (map.containsKey(k)) {
                map.put(k, v);
            }
        }
    }

    public static void print() {
        String out = "";
        for (Object k : map.keySet()) {
            out += k + "-" + map.get(k) + ",";
        }
        System.out.println(out.substring(0, out.length() - 1));
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25752393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档