【发布时间】:2021-11-03 07:17:26
【问题描述】:
我们需要从大写字符串中获取字符流。有两种方法:
-
word.toUpperCase().chars() -
word.chars().map(Character::toUpperCase)
哪种方法更好?
附:按照 cmets 中的要求,我指定了使用代码的整个方法:
private int[] toSortedChars(final String word) {
return word.chars().map(Character::toLowerCase).sorted().toArray();
}
【问题讨论】:
-
我的直觉告诉我,第二种方法更快更好,因为它不会创建额外的字符串。
-
第二种方法占用的空间更大,因为它创建了一个流并且代码更简单。但是您是否尝试过对其进行基准测试?
-
这主要取决于你想对生成的
IntStream做什么,你能澄清一下吗? -
我和 Lino 在一起 - 你需要告诉我们你想对大写字符做什么。正如 Hoopje 正确指出的那样,某些输入的结果会有所不同。我们无法判断哪个版本更符合您的用例,任何性能考虑都取决于您为流考虑的终端操作。
-
所以除了答案中提到的问题之外,无论如何这都有限制。 Unicode 的字符跨越多个
char单元甚至多个代码点。如果您接受方法的局限性,则可以继续使用第二种方法,处理 n:m 案例映射无论如何都不会在排序后产生可理解的结果。
标签: java string java-stream