Разделить строку [] на две другие строки [] - PullRequest
2 голосов
/ 01 февраля 2012

У меня есть 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 может варьироваться

Ответы [ 3 ]

12 голосов
/ 01 февраля 2012

Самым простым подходом будет просто:

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>?

3 голосов
/ 01 февраля 2012

Вместо разделения на два массива обычно более полезно создать карту для быстрого поиска.

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");
0 голосов
/ 01 февраля 2012

Вы можете разделить четные и нечетные элементы на 2 строки [].Перед этим вы должны назначить размер каждой подстроки.если оригинальная строка имеет odd length, подстрока содержит нечетные элементы is length, а подстрока и подстрока содержит четные элементы length + 1.в противном случае 2 подстроки имеют одинаковую длину = длину /2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...