上級 › stream has already been operated upon の原因と直し方 › パターン5
stream has already been operated upon の原因と直し方
Streamは1回しか終端操作できません。
1 import java.util.List; 2 import java.util.Map; 3 import java.util.stream.Collectors; 4 5 public class Main { 6 public static void main(String[] args) { 7 Map<Integer, String> m = List.of("a", "bb", "cc").stream() 8 .collect(Collectors.toMap(String::length, s -> s_________________)); ^ 9 System.out.println(m); 10 } 11 }
Exception in thread "main" java.lang.IllegalStateException: Duplicate key 2exited with code 1
空欄を埋めてビルドを通す
Collectors.toMapはキーが重複すると例外を投げます。マージ関数を渡すと、重複したときにどちらを残すか指定できます。
次の問題