ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Java中String内部排序方法

Java中String内部排序方法

目录

一、基础思路

1. 普通升序排序(字母 / 数字 ASCII 顺序)

2. 降序排序

方式 1:升序后反转数组

方式 2:转 Character 数组 + 集合排序(流式写法)

3. 忽略大小写排序(英文字母)

4. 只排序字母 / 过滤特殊字符再排序

补充说明

中文按拼音排序示例(拓展)


这里分Java场景讲解字符串内部字符排序,附多种常用实现、示例和说明。

一、基础思路

字符串String不可变,核心步骤:

  1. 把字符串转为字符数组
  2. 对数组排序
  3. 排序后转回字符串

1. 普通升序排序(字母 / 数字 ASCII 顺序)

public class StringSort { public static void main(String[] args) { String str = "bac321"; // 1. 转字符数组 char[] chars = str.toCharArray(); // 2. 数组排序 java.util.Arrays.sort(chars); // 3. 转回字符串 String result = new String(chars); System.out.println("原字符串:" + str); System.out.println("排序后:" + result); } }

输出:

原字符串:bac321 排序后:123abc

2. 降序排序

Java 原生Arrays.sort(char[])只支持升序,降序两种写法:

方式 1:升序后反转数组

public static String sortDesc(String str) { char[] chars = str.toCharArray(); Arrays.sort(chars); // 反转 for (int i = 0, j = chars.length - 1; i < j; i++, j--) { char temp = chars[i]; chars[i] = chars[j]; chars[j] = temp; } return new String(chars); } // 调用 String s = "bac"; System.out.println(sortDesc(s)); // cba

方式 2:转 Character 数组 + 集合排序(流式写法)

import java.util.Arrays; import java.util.Comparator; import java.util.stream.Collectors; String str = "bac"; String descStr = Arrays.stream(str.split("")) .sorted(Comparator.reverseOrder()) .collect(Collectors.joining()); System.out.println(descStr); // cba

3. 忽略大小写排序(英文字母)

默认按 ASCII 排序:大写字母 < 小写字母,如需忽略大小写:

String str = "BaCxYz"; String sortStr = Arrays.stream(str.split("")) .sorted(String.CASE_INSENSITIVE_ORDER) .collect(Collectors.joining()); System.out.println(sortStr); // aBCXyz

4. 只排序字母 / 过滤特殊字符再排序

示例:只保留字母并排序

String str = "b1a#c2"; String res = Arrays.stream(str.split("")) .filter(c -> c.matches("[a-zA-Z]")) // 只保留字母 .sorted() .collect(Collectors.joining()); System.out.println(res); // abc

补充说明

  1. 排序规则:底层按ASCII 码值排序
    • 数字0-9:48~57
    • 大写字母A-Z:65~90
    • 小写字母a-z:97~122
  2. 中文排序:ASCII 排序对中文无效,中文需使用Collator按拼音 / 笔画排序。
  3. 空串 / 空值:使用前建议判空,避免NullPointerException

中文按拼音排序示例(拓展)

import java.text.Collator; import java.util.Arrays; import java.util.Locale; public class ChineseSort { public static void main(String[] args) { String str = "张三李四王五"; String[] arr = str.split(""); // 中文拼音排序器 Collator collator = Collator.getInstance(Locale.CHINA); Arrays.sort(arr, collator); String result = String.join("", arr); System.out.println(result); } }
返回列表