gpt4 book ai didi

java - 如何在Java中对不同数字的字符串进行正确排序?

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:05 26 4
gpt4 key购买 nike

请原谅我的英语。

使用此代码,

 Collections.sort(mEntries, new Comparator<ZipEntry>() {
public int compare(ZipEntry a, ZipEntry b) {
return a.getName().compareTo(b.getName());
}
});

当有这样的字符串时:hello1,hello3,hello2,hello11​​,hello10

它将被排序为:hello1,hello10,hello11​​,hello2,hello3

我想要的结果是这样的:

hello1,hello2,hello3,hello10,hello11

但是当像这样有相同数字的字符串时,它可以正确排序。

来自此:hello01,hello03,hello02,hello11​​,hello10。

进入这个:hello01,hello02,hello03,hello10,hello11​​

知道如何才能达到我想要的结果吗?

hello1,hello2,hello3,hello10,hello11

谢谢。

最佳答案

您当前使用的排序是自然(字典顺序)String 排序,通过对 String 调用 compareTo 派生。

根据字典排序,“10”位于“2”之前。

您想要对具有相同基数、以数字结尾的String进行排序是数字排序,这是Number(算术)的自然排序。

根据自然的Number排序,102之后。

你想要的是:

  • 检索两个String
  • 验证它们唯一的区别是最后一个数字(使用正则表达式)
  • 如果没有,请像您已经做的那样按字典顺序比较它们
  • 如果唯一的区别最后一个数字,则检索最后一个数字并创建两个 Integer(通过正则表达式和 Integer.parseInt 习惯用法)
  • 然后对这些 Integer 调用 compareTo 方法并返回结果

关于java - 如何在Java中对不同数字的字符串进行正确排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com