java - 按字母顺序对其中包含数字的字符串进行排序

标签 java sorting

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

假设我在数组或数组列表中有多个 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() 方法时,它涉及这些字符串中的数字。我很难用这种排序算法构建逻辑。

我看过自然排序方法,但我不确定我是否走在正确的轨道上,因为我是新手。

所以我要比较每个字符并检查当前索引是否为数字?还是我要将每个字符转换为十六进制值并像那样比较字符串?

Java 是否提供任何方法来帮助我解决这种分离问题?

任何帮助、指导、文档、片段都将不胜感激。

问候。

最佳答案

您可以在 Collections.sort() 方法中提供一个比较器,无论输入字符串中的任何数字如何,它都会进行排序:

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

关于java - 按字母顺序对其中包含数字的字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55702563/

相关文章:

java - 如何不按键而是按值类的字段对映射进行排序?

c++ - 确定 std::sort(begin, end) 是否修改了范围

c# - 非字母字符串数组的自定义排序

Java 执行命令行并在询问时总是替换 [Y/N]

java - 为什么 Hibernate 不需要参数构造函数?

java - 抛出异常后的返回值

java - 它们真的是虚拟代码吗?

java - 在 Websocket 上通过 Nginx 转发用户 IP

objective-c - 核心数据 : Sorting & Decrypting Value from a Transformable Field

python - 根据一个列表对Python中的五个列表进行排序