Java 8:将字符串数组首字符转为大写并排序的实现问题
解决字符串数组首字母大写并排序的问题
没问题,我帮你搞定这个需求!你的核心目标是把数组里每个字符串的首字母转为大写,然后对数组进行自然排序,下面是可以正常运行的完整代码,以及关键部分的解释:
完整可运行代码
import java.util.Arrays; public class StringProcessor { public static void main(String[] args) { String[] strArray = { "Red", "green", "Blue", "Yellow", "violet", "magenta", "pURPLE" }; // 处理流操作:首字母大写 -> 排序 -> 转数组 String[] transformedArray = Arrays.stream(strArray) .map(str -> { // 空字符串或null直接返回,避免空指针异常 if (str == null || str.isEmpty()) { return str; } // 首字符转大写,其余字符保留原格式 return str.substring(0, 1).toUpperCase() + str.substring(1); }) .sorted() // 执行自然排序,符合预期输出的顺序 .toArray(String[]::new); // 把流转回字符串数组 // 打印结果 System.out.println(Arrays.toString(transformedArray)); } }
关键部分说明
- 首字母大写处理:通过
substring(0,1).toUpperCase()把第一个字符转为大写,再拼接上原字符串从第二个字符开始的子串,这样既保证首字母大写,又保留了原字符串其余部分的大小写格式(比如原字符串pURPLE会变成PURPLE,green变成Green)。 - 空值防护:增加了对
null和空字符串的判断,避免处理空字符串时抛出StringIndexOutOfBoundsException。 - 排序与转数组:调用
sorted()实现自然排序(按字符串的Unicode码点排序,和你预期的输出顺序一致),最后用toArray(String[]::new)将流转回字符串数组,这样才能正确打印出数组内容。
运行这段代码后,你会得到预期的输出:
[Blue, Green, Magenta, PURPLE, Red, Violet, Yellow]
内容的提问来源于stack exchange,提问作者Shanu Gupta
相关产品推荐
相关产品推荐

