我对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]", "")));