我需要对名称进行排序。这些名称有时带有数字的统计信息,如果名称有和没有,我该如何对数字进行排序。目前我仅对字母进行排序。
Ex: 3.Animal
1.Box
4.Monkey
2.Tiger
但我需要在上面显示如下。
1.Box
2.Tiger
3.Animal
4.Monkey
我需要正则表达式吗?如果需要,我需要什么RE?
如果没有,我该如何在Java中进行处理。
提前致谢。
最佳答案
正则表达式当然似乎是一个合理的第一步。您了解Comparator吗?它定义了一种方法int compare(T one, T two)
,它具有通常的“作为比较结果”的语义。一旦有了Comparator
的实例,就可以将其传递给排序方法,例如Collections.sort
。
因此,一种方法是编写一个Comparator<String>
,其compare
方法使用正则表达式提取两个字符串的数字部分,然后进行数值比较。问题在于,每次查看每个String时都要进行解析,这可能会变得很昂贵。
一种替代方法是创建一个TreeMap<Integer,String>
,并插入键-值对,其中键是已解析的int,值是原始String。然后,您可以迭代设置的值,它们将按关键顺序列出。那可能就是我要采取的方法。
编辑yytg带来了一个好处,那就是对于这样一个简单的解析,您将在"\\."
上进行拆分(限制为2)并解析左侧同样好。您也可以使用String.indexOf
查找点,然后使用String.substring
将String的部分保留在点的左侧。
关于java - 我需要根据正则表达式模式对名称进行排序,我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8427412/