我已经读过这篇相关的文章。当涉及String操作时,流似乎吸引了大量的仪式。如果您想将String解析为字符流,可能需要对其进行一些操作,则需要IntStream
先将它们转换为,映射为Object
,然后转换int
为char
,最后转换char
为String
,然后返回它。
人们说命令式编程会给仪式带来开销。如果我完全做错了,请纠正我。我的目的不是模拟,而是要更好地理解Java流,因为我通常对此表示赞赏。
// Simple method which encrypts all chars in a string
String input = "Hel!lo";
String result = input.chars() // Need to convert into an IntStream
.mapToObj(e -> Character.toUpperCase((char) e)) // Need to map to Object (!) and then cast to char
.map(CryptoMath::encryptChar) // Calling the encryption
.map(String::valueOf) // Need to cast to String again...
.collect(joining("")); // Finally done
System.out.println(result);
如果您可以使用Unicode代码点而不是字符进行操作,则它会比在以下位置上进行操作更为麻烦char
:
String input = "Hel!lo";
String result = input.codePoints()
.map( Character::toUpperCase )
.collect( StringBuilder::new,
StringBuilder::appendCodePoint,
StringBuilder::append )
.toString();
System.out.println(result);
无需装箱,在收集时无需转换为字符串,并且输入数据中的代理对使您不太可能被绊倒。实施一些可以满足更多输入需求的事情时,工作就轻松了一些。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句