我有这个字符串列表
Car1
Car2
Car3
......
Carn
我想根据其中的数字对这个列表进行排序。
例如,如果我有Car3, Car1, Car12, Car45
,我希望它像Car1, Car3, Car12, Car45
一样排序。
我使用了Collections.sort()
,但它返回类似Car1, car12, car3, Car45
的内容。
我应该怎么做才能把它按正确的顺序排列?
排序是字典式的,你得到这个顺序是因为字母表中的1小于3,比较器不考虑接下来的内容。您需要做的是编写自己的比较器,这将剪切“Car”,只留下字符串中的数字,然后您需要将数字的字符串表示形式解析为int并比较int(作为解决方案之一)
使用这个:
class ComparatorOfNumericString implements Comparator<String>{
public int compare(String string1, String string2) {
// TODO Auto-generated method stub
String a = string1.substring(3);
String b = string2.split(3);
return Integer.parseInt(a)-Integer.parseInt(b);
}
}
现在,在排序时,按如下方式传递此比较器:
Collections.sort(stringList,new ComparatorOfNumericString ());
您需要一个自定义比较器,类似于
Collections.sort(list, new Comparator<String>() {
public int compare(String s1, String s2) {
int i1 = Integer.parseInt(s1.replaceAll("\\D", ""));
int i2 = Integer.parseInt(s2.replaceAll("\\D", ""));
return Integer.compare(i1, i2);
}
});
为什么我没有得到自然排序的输出?
问题内容: 我有一个带有文件名的字符串列表: 输出: 但是我想要: 有没有简单的方法可以做到这一点? 问题答案: 是: 说明:字符串按词法排序,因此在字符串之前(因为< ,因此忽略第一个字符串之后的内容)。因此,我们使用的参数是一个回调函数,该函数接受一个列表项并返回用于对该项目进行排序的值- 在您的情况下,是从文件名的第一部分构建的整数。这样,列表就可以正确地按数值排序。
问题内容: 我对Regex的经验不足,但是我已经阅读了很多。假设有一个字符串,我想要一个列表,该列表的字符串分为两个部分。我的方法是让一个小组检查是否是数字,然后检查该小组是否重复。像这样 我认为基本上可以检查“ digit”或“ digit +”是否相同。我认为这可以满足我的要求。 问题答案: 用途:
我的 数据帧索引如下所示: 我想对这个索引进行排序,以便数字从到。如果我使用 我会得到与上面相同的内容。关于如何正确排序此索引的任何建议?
我有一个程序,它接受一个单词和一个文本文件字典,并在字典中搜索与给定单词相等的单词组合(是字母表)。 我最后得到了一个字符串数组的Arraylist,每个数组都是一个包含它所使用的单词的解决方案,Arraylist是所有的解决方案。 它首先按字长(降序)排序,然后对等长字使用字母排序。 我现在对各个数组进行了排序,但我正试图按照某些规则在arraylist中对它们进行排序: 按字数递增 对于包含相
问题内容: 有一些值,例如AB,A012B,CD,1、10、01、9我必须对其进行排序,输出的输出应为01、1、9、10,A012B,AB,CD可以使用任何试图使用collection的collection .sort函数,但将所有内容都视为字符串并像01,1,10,9,A012B,AB,CD一样打印,这不是我的要求…请帮助 问题答案: //捕鱼技术 //不够??? //这是鱼