如何按字母顺序排序数组,标点符号保持优先权

时间:2018-03-21 21:01:22

标签: java arrays sorting

所以,如果我有一个字符串数组,如:

array = { "Carol", "`-=[]\;',.//uF18*-+~!@#$*"};

我如何对它进行排序,以便在重新分类中首先使用标点符号?使用Arrays.sort(数组)会将这些字符串放在任何字符串开头之后。我们的目标是:

 array = {"`-=[]\;',.//uF18*-+~!@#$*", "Carol"}
排序后

1 个答案:

答案 0 :(得分:2)

这听起来像整理,通常基于自定义字符序列。例如。 RuleBasedCollator可让您定义不同字符之间的相互关系:

Collator collator = new RuleBasedCollator("< '`','-','=' < A,B,C");
String[] array = { "Carol", "`-=[]\\;',.//uF18*-+~!@#$*"};
Arrays.sort(array, collator);

为了便于阅读,我们一直保持不足,但很明显,你需要在这些规则中处理更多角色。通常没有必要走得太远 - 你遗漏的任何角色只是恢复到正常的顺序,在规则之后。并注意标点符号往往需要引用。

RuleBasedCollator确实在这些规则中有更多的内容。例如,它可以在排序之前处理多字母分组,例如,西班牙语"< c < ch < d"。如有疑问,请查看Javadocs