mi stava per puntare a my earlier answer su questo argomento, ma si scopre che hai già collegato a that question. Lo other answer fornisce anche informazioni utili.
Se volete char
valori, è possibile utilizzare il IntStream
restituito da String.chars()
e gettato i valori int
per char
senza perdita di informazioni. Le altre risposte hanno spiegato il motivo per cui non esiste una specializzazione primitiva CharStream
per la classe Stream
.
Se si desidera realmente oggetti boxed Character
, utilizzare mapToObj()
per convertire da IntStream
a un flusso di tipo di riferimento. Entro mapToObj()
, inserire il valore int
in char
. Poiché un oggetto è previsto come valore di ritorno, lo char
verrà inserito automaticamente in un Character
. Ciò risulta in Stream<Character>
. Ad esempio,
Stream<Character> sch = "abc".chars().mapToObj(i -> (char)i);
sch.forEach(ch -> System.out.printf("%c %s%n", ch, ch.getClass().getName()));
a java.lang.Character
b java.lang.Character
c java.lang.Character
fonte
2014-10-12 04:51:12
Il metodo chars() è nella classe base CharSequence! – isnot2bad
Sì, ho gradle usare Java 7. Ma come posso ottenere uno Stream da una stringa? –
ElderMael
@ElderMael Stai usando Java 7 o Java 8? Questi metodi e tipi sono nuovi in Java 8. –