我对Java中的编程/算法问题还很陌生,我无法弄清这种排序算法。

假设我在数组或arraylist中有多个String元素。

"She ate 10 eclair"
"She ate 99 donuts"
"She had 20 eclair"
"She had 10 eclair"


当我对这些字符串进行排序时,算法问题要求我跳过数字并首先按字母顺序对其进行排序。像这样:

"She ate 99 donuts"
"She ate 10 eclair"
"She had 10 eclair"
"She had 20 eclair"


因此,当我使用常规的Collections.sort()compareTo()方法时,这些字符串中包含数字。我很难用这种排序算法来构建逻辑。

我已经研究了自然排序方法,但是由于我很新,因此我不确定自己是否走在正确的轨道上。

所以我要按字符比较此值并检查当前索引是否为数字?还是我将每个char转换为十六进制值并比较类似的字符串?

Java是否提供任何可以帮助我解决这种分离的方法?

任何帮助,方向,文档,摘要都将不胜感激。

问候。

最佳答案

您可以提供一个比较器到Collections.sort()方法中,该方法将对输入String中的任何数字进行排序:

List<String> list = ... ; //your list
Collections.sort(list, (a, b) -> a.replaceAll("[\\d]", "").compareTo(b.replaceAll("[\\d]", "")));

10-06 05:56