Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于字母数字列表的Collections.sort()的比较器_Java_Sorting - Fatal编程技术网

Java 用于字母数字列表的Collections.sort()的比较器

Java 用于字母数字列表的Collections.sort()的比较器,java,sorting,Java,Sorting,所以我有一系列字母数字项目的列表,比如 "123456" "alpha" "tango" "beta" ... 我想使用Collections.sort()对这个列表进行排序,但是我需要按照(1234,AAAA,AAAA,bbbbbb,BBBB,…)的顺序进行排序,首先是数字,然后是大小写单词。所有元素都是字符串,包括任何明显的数字。Collections.sort()是否会处理这种情况,因为它们实际上都是字符串,或者如果不是,我将使用什么Comparator来实现这一点? 或者有没有其他更有

所以我有一系列字母数字项目的列表,比如

"123456"
"alpha"
"tango"
"beta"
...
我想使用
Collections.sort()
对这个列表进行排序,但是我需要按照
(1234,AAAA,AAAA,bbbbbb,BBBB,…)
的顺序进行排序,首先是数字,然后是大小写单词。所有元素都是字符串,包括任何明显的数字。
Collections.sort()
是否会处理这种情况,因为它们实际上都是字符串,或者如果不是,我将使用什么
Comparator
来实现这一点? 或者有没有其他更有效的方法来实现这一点,比如使用正则表达式

谢谢。

您可以使用:

List List=Arrays.asList(“1234”、“AAAA”、“AAAA”、“BBBB”、“BBBB”);
Collator c=Collator.getInstance(Locale.ENGLISH);
c、 setStrength(Collator.正则_分解);
集合。排序(列表);
System.out.println(“不带拼贴符:+列表”);
集合。排序(列表,c);
System.out.println(“带分隔符:+列表”);
产出:

不带装订机:[1234,AAAA,BBBB,AAAA,BBBB]
带领口:[1234,AAAA,AAAA,BBBB,BBBB]


注意:你可能需要一个不同的项圈来满足你的需要,尽管这个看起来不错。在最坏的情况下,您可以创建。

@JBNizet,因为总有人愿意屈服;)我通常会写JB,但目前我什么都不会写。我只是想在脑子里解决一个错误,我想我会检查一下什么时候我可以再写。只要“数字”指的是数字0-9,而“字母数字”的“字母”部分不包括重音字符,Unicode(和拉丁语1(和ASCII))中的顺序是数字出现在大写字母之前,出现在小写字母之前。然而,如果大写字母或印地语数字起作用,你需要一个比较器或一个拼贴器。是的,它只使用数字0-9,并且只使用标准的英语非重音字符。最后,我将使用Collator来处理并非所有出现在开头的大写字符串。谢谢你的意见!好的,谢谢!我现在不能测试这个,但从我所看到的来看,它是正确的。这应该对我正在做的事情有用。你在问题中说“…后面跟着大写字母,然后是小写字母”,但你也说“aaaa”应该在“BBBB”之前。我想你说错了其中的一个要求。不,它们必须按字母顺序排列,但是如果有重复的字符串,其中一个是大写的,则大写字母优先。对不起,有什么困惑。AAAA->AAAA->BBBB->BBBB
List<String> list = Arrays.asList("1234","AAAA","aaaa","BBBB","bbbb");
Collator c = Collator.getInstance(Locale.ENGLISH);
c.setStrength(Collator.CANONICAL_DECOMPOSITION);

Collections.sort(list);
System.out.println("without collator: " + list);
Collections.sort(list, c);
System.out.println("with collator: " + list);