Java 8/9: Um caractere em uma String pode ser mapeado para seus índices (usando fluxos)?

Dado umString s e umchar c, Estou curioso para saber se existe algum método para produzir umList<Integer> list des (onde os elementos dentrolist representam os índices dec dentros)

Um fim, masincorreta abordagem seria:

public static List<Integer> getIndexList(String s, char c) {
    return s.chars()
            .mapToObj(i -> (char) i)
            .filter(ch -> ch == c)
            .map(s::indexOf) // Will obviously return the first index every time.
            .collect(Collectors.toList());
}

As seguintes entradas devem produzir a seguinte saída:

getIndexList("Hello world!", 'l') -> [2, 3, 9]

questionAnswers(4)

yourAnswerToTheQuestion