word.toUpperCase().chars() 和 word.chars().map(Chars::toUpperCase) 哪个更好?

Jeg*_*ovs 3 java string java-stream

我们需要从大写字符串中获取字符流。有两种方法:

  1. word.toUpperCase().chars()

  2. word.chars().map(Character::toUpperCase)

哪种方法更好?

PS 按照评论中的要求,我指定了使用代码的整个方法:

private int[] toSortedChars(final String word) {
   return word.chars().map(Character::toLowerCase).sorted().toArray();
}
Run Code Online (Sandbox Code Playgroud)

解决练习时使用的方法: https ://exercism.org/tracks/java/exercises/anagram

Hoo*_*pje 9

第一种方法比较好。

\n

Character.toUpperCase 的 Javadoc 提到:

\n
\n

一般来说,应该使用 String.toUpperCase() 将字符映射为大写。字符串大小写映射方法比字符大小写映射方法有几个优点。字符串大小写映射方法可以执行区域设置敏感映射、上下文敏感映射和 1:M 字符映射,而字符大小写映射方法则不能。

\n
\n

您现在可能不会考虑与英语不同的语言,但在某些时候您可能想要支持其他语言,然后大写变得更加困难,因为字符不能再单独大写。

\n

例如:"Stra\xc3\x9fe".toUpperCase()返回"STRASSE"(即使在英语语言环境中),如果将每个字符分别转换为大写,则无法复制这种行为。

\n

(注:最近,德语中添加了大写字母“\xc3\x9f”,但除了大写名称外,它还不常用。)

\n

  • 当然,这在很大程度上取决于后续操作。如果这两种方法都不推荐用于OP实际想做的事情,我不会感到惊讶...... (2认同)