回答として2点あります。
1点目
下記のコードでListからStreamを生成しているため、ListのpokemonListとは関わりがなくなってしまっています。
(pokemonListとstは別のものの扱いになります。また、Streamは知識がないと少し扱いにくいため、初心者であればオススメしません。)
Java
1Stream<String> st = pokemonList.stream();
2点目
forEachメソッドは何かを行うメソッドで、変換を行うメソッドではありません。
なのでforEach内で何かを書き換える事はできない、もしくはタブーだと思ってください。
Java
1st.forEach(pokemon -> System.out.print(pokemon+="です。"));
2点を踏まえて、質問者様がやりたい事(です。がリストに反映される)をコードに起こすと下記になると思います。
Streamを知らない場合も書いておきます。
Stream版
Mapメソッドは変換を行うメソッドで、collect(Collectors.toList())はListを生成するメソッドです。
Java
1import java.util.ArrayList;
2import java.util.Arrays;
3import java.util.List;
4import java.util.stream.Collectors;
5
6public class Main {
7 public static void main(String[] args) {
8 List<String> pokemonList = new ArrayList<>(Arrays.asList("ピカチュウ", "カビゴン", "ギャラドス","カメックス"));
9 // です。を追加したリストに変換する。
10 List<String> newPokemonList = pokemonList.stream().map(pokemon-> pokemon + "です。").collect(Collectors.toList());
11
12 // 変換は行わずに、文字列の出力のみを行っている。
13 newPokemonList.forEach(pokemon-> System.out.print(pokemon));
14 // newPokemonListは「です。」を追加したリストなので2回目も同じ結果が出力される
15 newPokemonList.forEach(pokemon-> System.out.print(pokemon));
16 }
17}
Streamではない版
Java
1import java.util.ArrayList;
2import java.util.Arrays;
3import java.util.List;
4
5public class Main {
6 public static void main(String[] args) {
7 List<String> pokemonList = new ArrayList<>(Arrays.asList("ピカチュウ", "カビゴン", "ギャラドス","カメックス"));
8
9 // ポケモン名+です。の文字列を格納するために、空のリストを用意する。
10 List<String> newPokemonList = new ArrayList<>();
11
12 for (String pokemon: pokemonList) {
13 // ポケモン名+です。の文字列を格納する
14 newPokemonList.add(pokemon + "です。");
15 }
16
17 // 変換は行わずに、文字列の出力のみを行っている。
18 newPokemonList.forEach(pokemon-> System.out.print(pokemon));
19 // newPokemonListを「ポケモン名+です。」の文字列を格納したリストにしているので2回目も同じ結果が出力される
20 newPokemonList.forEach(pokemon-> System.out.print(pokemon));
21 }
22}