Есть список:
List list = new ArrayList<>();
В этом списке по порядку находятся следующие значения:
"text1"
"text2"
"http://www...."
"text3"
"text4"
"text5"
"http://www...."
"text6"
Как мне переделать этот список так, чтобы он имел следующие элементы (как бы все элементы между URL адресами должны стать одним элементом):
"text1+text2"
"http://www...."
"text3+text4+text5"
"http://www...."
"text6"
Что-то не могу логически сообразить, как сделать маленький компактный код для этой задачи. Помогите, пожалуйста!
Объявляя нетипизированную коллекцию:
List list = new ArrayList<>();
Вы можете получить ошибки в дальнейшем. Всегда явно указывайте тип:
List<String> list = new ArrayList<>();
Самый примитивный вариант:
private List<String> transform(List<String> stringList) {
List<String> resultList = new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
for (String s : stringList) {
if (!s.startsWith("http://www")) {
stringBuilder.append(s);
stringBuilder.append("+");
} else if (stringBuilder.length() > 0) {
stringBuilder.setLength(stringBuilder.length() - 1);
resultList.add(stringBuilder.toString());
resultList.add(s);
stringBuilder.setLength(0);
}
}
if (stringBuilder.length() > 0) {
stringBuilder.setLength(stringBuilder.length() - 1);
resultList.add(stringBuilder.toString());
}
return resultList;
}
PS. Без оптимизации и обработки граничных случаев.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей