我有String[]
看起来像这样,第一个String
远离属性名称,第二个是值:
String[] full = { "property1", "value1", "property2", "value2", "property3", "value3" };
我想将String[]
分成另外两个String[]
,如下所示:
String[] properties = { "property1", "property2", "property3" };
String[] values = { "value1", "value2", "value3" };
有没有办法以编程方式执行此操作?
PS:Strings
中的属性/值full
可能会有所不同
答案 0 :(得分:12)
最简单的方法就是:
String[] properties = new String[full.length / 2];
String[] values = new String[full.length / 2];
for (int i = 0; i < properties.length; i++)
{
properties[i] = full[i * 2];
values[i] = full[i * 2 + 1];
}
很难看出你能以一种比这更简单的方式做到这一点。您可能希望验证开始时full.length
是偶数。
构建两个数组而不是(比如)Map<String, String>
的任何理由?
答案 1 :(得分:3)
不是分成两个数组,而是为了快速查找构建Map通常更有用。
public static Map<String, String> asMap(String... keyValuePairs) {
Map<String, String> map = new LinkedHashMap<>();
for(int i = 0; i < keyValuePairs.length; i += 2)
map.put(keyValuePair[i], keyValuePait[i+1]);
return map;
}
Map<String, String> map = asMap("property1", "value1",
"property2", "value2",
"property3", "value3");
String value3 = map.get("property3");
答案 2 :(得分:0)
您可以将偶数成员和奇数成员拆分为2 String []。 因此,您必须指定每个子字符串的大小。 如果原始字符串的长度为奇数,则子字符串包含奇数成员长度,子字符串和子字符串包含偶数成员长度为+ 1。 else 2 substring是相同的length = length / 2.