今天,我遇到了一个对ArrayList进行排序的问题,但是当我使用默认函数array.sort()时,结果不能满足我的期望。我需要一种规则:数字,字母,中文,其他符号,但是默认规则是ASCII代码的顺序,因此我尝试覆盖比较功能。private static String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>\\\\/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; Pattern p = Pattern.compile(regEx); array.sort(new Comparator<NavigationNode>() { @Override public int compare(NavigationNode o1, NavigationNode o2) { if(p.matcher(o1.getName().substring(0,1)).find() && !p.matcher(o2.getName().substring(0,1)).find()){ return 1; }else if(!p.matcher(o1.getName().substring(0,1)).find() && p.matcher(o2.getName().substring(0,1)).find()){ return -1; } return o1.getName().compareTo(o2.getName()); } });如果您有什么建议请告诉我,非常感谢!!! 最佳答案 那就是Collat​​or类的工作:https://docs.oracle.com/javase/8/docs/api/java/text/Collator.html我不确定它如何处理数字和其他符号,它的主要用途是使用来自不同语言的规则对非ASCII字符进行排序。整理程序实现Comparator ,因此可以按以下方式使用它:private static final Collator COLLATOR = Collator.getInstance(...);array.sort(COLLATOR);还有一个通用整理器,可用于根据Unicode规则混合不同的语言:private static final Collator COLLATOR = Collator.getInstance(Locale.ROOT);如果需要,您还可以编写自己的RuleBasedCollat​​or。关于java - 根据每个字符类的自定义规则对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61748581/
10-11 20:45