You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:16:15