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 Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
Arrays.sort(arr, Comparator.comparingInt(String::length))- 同样支持链式操作,比如先按长度再按字典序:
Comparator.comparingInt(String::length).thenComparing(Comparator.naturalOrder())
对 List 排序(常见变体)
如果数据在 List 中,用 Collections.sort() 或 list.sort():
立即学习“Java免费学习笔记(深入)”;
list.sort(Comparator.comparingInt(String::length))- 或
Collections.sort(list, Comparator.comparingInt(String::length)) - 注意:List 是可变的,排序会原地修改;如需保留原顺序,先
new ArrayList(original)
自定义 Comparator 类(适合复杂逻辑)
当排序规则较复杂(例如忽略空字符串、按长度分组再排序等),可单独写类:
- 实现
Comparator<string></string>接口,重写compare()方法 - 在方法中判断 null、空串等边界情况,再比较长度
- 例如:
if (s1 == null || s2 == null) return 0;(按需调整)

















