【问题标题】:how to sort a string alphabetically java [closed]如何按字母顺序对字符串进行排序java [关闭]
【发布时间】:2013-10-28 09:17:10
【问题描述】:

我想在JAVA中对一个字符串按字母顺序排序,如下 后跟大写字母和小写字母 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 例如,如果我把 AbaC 返回给我 AabC 谢谢!!

【问题讨论】:

  • 新年祝福还为时过早,到时候你就得付出一些努力了。到目前为止,您尝试过什么?

标签: java alphabetical


【解决方案1】:

如果您先将字符放入数组中,则可以使用Arrays.sort 执行此操作。 (它必须是 Character 对象数组而不是 char 原语,以便使用自定义的不区分大小写的比较器。)

// put the characters into an array
Character[] chars = new Character[str.length()];
for (int i = 0; i < chars.length; i++)
    chars[i] = str.charAt(i);

// sort the array
Arrays.sort(chars, new Comparator<Character>() {
    public int compare(Character c1, Character c2) {
        int cmp = Character.compare(
            Character.toLowerCase(c1.charValue()),
            Character.toLowerCase(c2.charValue())
        );
        if (cmp != 0) return cmp;
        return Character.compare(c1.charValue(), c2.charValue());
    }
});

// rebuild the string
StringBuilder sb = new StringBuilder(chars.length);
for (char c : chars) sb.append(c);
str = sb.toString();

【讨论】:

  • 这将分割 UTF-16 代理。
【解决方案2】:

你可以尝试寻找Collections.sort,然后像这样尝试:-

Collections.sort(caps, String.CASE_INSENSITIVE_ORDER);

类似这样的:-

private static Comparator<String> ALPHA_ORDER = new Comparator<String>() {
    public int compare(String str1, String str2) {
        int x = String.CASE_INSENSITIVE_ORDER.compare(str1, str2);
        if (x== 0) {
            x= str1.compareTo(str2);
        }
        return x;
    }
};

Collections.sort(list, ALPHA_ORDER);

编辑:-

要在字符串中按字母顺序排序,请尝试如下:-

Collator col = Collator.getInstance(new Locale("en", "EN"));
String s = "AbaC";
String[] s1= s.split("");
Arrays.sort(s1, col);
String sorted = "";
for (int i = 0; i < s1.length; i++)
{
  sorted += s1[i];
}
System.out.println(sorted);

【讨论】:

  • OP 想要对字符串中的字符进行排序,而不是字符串列表。
  • 这只是将字符串转换为字符列表的问题,这是微不足道的部分。
  • @Boann:- 更新了我的答案。希望这会变得更好吗?
  • 现在它不处理不区分大小写的要求了。
  • @Boann:- 是的,更正了!
【解决方案3】:

将 String 转换为字符数组,然后比较排序中每个字符的 int 值。

需要的方法: String.toCharArray();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多