У меня есть список массивов, содержащий несколько строк.Мне нужно заменить один элемент в этом списке на обновленное значение на основе некоторых условий и сохранить другие строки.Мне нужна помощь в выполнении Java 8.
Пример кода:
String newPONumber = "Orig PO#: 22222222222222456";
List<String> existingMessages = Arrays.asList("Orig PO#: 2222222222222222 ", "this is a sample string ");
List<String> updatedMessages = new ArrayList<>();
System.out.println("Existing Messages");
existingMessages.stream().forEach(System.out::println);
//Java 8's way that I tried but losing the existing messages since filter is used
updatedMessages = existingMessages.stream()
.filter(message -> message != null)
.map(String :: trim)
.map(String:: toUpperCase)
.filter(message -> message.startsWith("ORIG"))
.map(message -> newPONumber)
.collect(Collectors.toList());
System.out.println("New Messages");
updatedMessages.stream().forEach(System.out::println);
Вывод должен содержать все сообщение плюс обновленная строка Orig PO #
//"Orig PO#: 2222222222222456", "this is a sample string"
Традиционный для петлевого пути
for(String message : existingMessages) {
message = message.trim();
if(message.startsWith("ORIG")) {
message = newPONumber;
}
updatedMessages.add(message);
}