我对java很陌生,而且我有这个问题;我正在使用一个来自android的new服务,在那里我发送一个请求,并得到一个类似于以下字符串的答复: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";
发布于 2014-09-09 19:59:15
以下是一个让你开始的想法;
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是这里。
发布于 2014-09-09 19:50:04
我会再次将每个值分开,然后比较这些值。
例:
String[] doubleSplit = totalButtons[index].split("-"); // "1-0" -> {"1", "0"}
发布于 2014-09-09 21:04:04
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));
}
}
https://stackoverflow.com/questions/25752393
复制相似问题