Как изменить элементы в списке строк в java8

Я хочу изменить все элементы в list.
Каков правильный способ сделать это с помощью java8?

public class TestIt {

public static void main(String[] args) {
    ArrayList<String> l = new ArrayList<>();
    l.add("AB");
    l.add("A");
    l.add("AA");
    l.forEach(x -> x = "b" + x);
    System.out.println(l);
}

}

Ответы

Ответ 1

Вы можете использовать replaceAll.

Заменяет каждый элемент этого списка результатом применения оператора к этому элементу.

ArrayList<String> l = new ArrayList<>(Arrays.asList("AB","A","AA"));
l.replaceAll(x -> "b" + x);
System.out.println(l);

Вывод:

[bAB, bA, bAA]

Ответ 2

Если вы хотите использовать потоки, вы можете сделать что-то вроде этого:

List<String> l = new ArrayList<>(Arrays.asList("AB","A","AA"));
l = l.stream().map(x -> "b" + x).collect(Collectors.toList());
System.out.println(l);

Вывод:

[bAB, bA, bAA]

Конечно, лучше использовать replaceAll, если вы хотите изменить все элементы списка, но используя потоки, вы также можете применить фильтров или для параллельной работы. replaceAll также изменяет список и выдает исключение, когда список не поддается изменению, тогда как collect создает новый список.