Java中数组按字符串长度排序需用Arrays.sort()配合自定义Comparator,推荐Lambda表达式Integer.compare(s1.length(), s2.length())或方法引用Comparator.comparingInt(String::length),List则用list.sort()或Collections.sort(),复杂逻辑可自定义Comparator类。

Java 中数组按字符串长度排序,核心是使用 Arrays.sort() 配合自定义比较器(Comparator),不能直接用自然排序,因为字符串默认按字典序排,不是按长度。
用 Arrays.sort() + Lambda 表达式(推荐)
适用于 String[] 数组,简洁高效:
- 调用
Arrays.sort(arr, (s1, s2) -> Integer.compare(s1.length(), s2.length())) -
Integer.compare()安全处理整数差值溢出,比s1.length() - s2.length()更健壮 - 升序:短字符串在前;若要降序,交换参数顺序或改为
(s1, s2) -> Integer.compare(s2.length(), s1.length())
用 Arrays.sort() + 方法引用(更简洁)
利用 Comparator.comparingInt() 和方法引用,语义清晰:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
Arrays.sort(arr, Comparator.comparingInt(String::length))- 同样支持链式操作,比如先按长度再按字典序:
Comparator.comparingInt(String::length).thenComparing(Comparator.naturalOrder())
对 List 排序(常见变体)
如果数据在 List 中,用 Collections.sort() 或 list.sort():
list.sort(Comparator.comparingInt(String::length))- 或
Collections.sort(list, Comparator.comparingInt(String::length)) - 注意:List 是可变的,排序会原地修改;如需保留原顺序,先
new ArrayList(original)
自定义 Comparator 类(适合复杂逻辑)
当排序规则较复杂(例如忽略空字符串、按长度分组再排序等),可单独写类:
- 实现
Comparator接口,重写compare()方法 - 在方法中判断 null、空串等边界情况,再比较长度
- 例如:
if (s1 == null || s2 == null) return 0;(按需调整)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










