按照字符串中数字大小利用Comparator排序

原创 2013年12月04日 12:12:16

按照字符串中的数字大小利用Comparator进行排序,没有数字的排最后,这里只做了初步的正则,只判断第一个出现的数字,作为一个例子

其中包含纯数字以及字母,汉字混编的字符串

public void Sorter() {

       List<String> strs = new ArrayList<String>();
       strs.add("方式看路");
       strs.add("20路");
       strs.add("也292路");
       strs.add("2(1)路"); //2(1)和2未做排序
       strs.add("2路");
       strs.add("1路");
       strs.add("Y1路");
       System.out.println(strs);
       // 用了一个Comparetor
       Comparator<String> com = new Comparator<String>() {
           public int compare(String o1, String o2) {

               // reture 0 则不改变位置,reture 1或者其他正数,升序, return -1或其他负数,降序


               if (o1 == o2) {
                   return 0;
               }
                
               String num1 = "0";
               String num2 = "0";
               Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher(o1);
if(m.find()){
MatchResult mr=m.toMatchResult();
num1 = mr.group(0);
}else {
return -1;
}
Pattern p1 = Pattern.compile("[0-9]+");
Matcher m1 = p1.matcher(o2);
if(m1.find()){
MatchResult mr=m1.toMatchResult();
num2 = mr.group(0);
}else {
return -1;
}
               return Integer.parseInt(num1) - Integer.parseInt(num2);
           }
       };
       Collections.sort(strs, com);
       System.out.println(strs);
}

相关文章推荐

字符串数字排序Arrays.sort() Comparator的用法

package test; import java.util.Arrays; import java.util.Comparator; public class Arraysort {  public...
  • Baple
  • Baple
  • 2014年03月05日 16:03
  • 2121

Java中对两个对象进行比较大小

在Java中要想对两个对象进行比较大小,需要实现Comparable接口或Comparator接口。String类型的值之所以可以比较大小(汉字根据ANSI值的大小进行比较),是因为String类实现...
  • fmwind
  • fmwind
  • 2016年08月11日 16:29
  • 4279

Java之——利用Comparator接口对多个排序条件进行处理

一、需求     假设现在有个如此的需求:需要对一个这样的雇员列表进行排序,排序规则如下:     1、首先级别最高的排在前面,     2、如果级别相等,那么按工资排序,工资高的排在前面,     ...

初步实现带有数字的字符串的排序(数字区别大小)

对于fss2,fss10,fss1,fss11,fss02排序,如果想对数字识别大小排序,传统排序是字典排序,不能达到目标,如下表: 散列 字典排序 目标排序 fss2...
  • Neo_86
  • Neo_86
  • 2014年03月24日 00:21
  • 4242

初步实现带有数字的字符串的排序(数字区别大小)

版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[-] 描述返回值遵循于 问题 对于fss2,fss10,fss1,fss11,fss0...

C#中使用DataGridView按数字大小排序显示access中特定数据

access中表数据如下图所示: 该表中[试样编号]是以字符即文本格式填写在表中。 C#中使用DataGridView显示上述access表中指定数据,但数据需要按照[试样编号]的数字大小排列。 ...

Java Map集合利用比较器Comparator根据Key和Value的排序

Java Map集合利用比较器Comparator根据Key和Value的排序

Java利用Comparator与Collections.sort对List排序

如果List中Object实现了Comparator接口,便可以直接用以下的方式对List进行排序 如List list,通过list.add("abc")等操作为list添加了一些元素,通过以...

【LeetCode】Merge Intervals 题解 利用Comparator进行排序

题目链接Merge Intervals /** * Definition for an interval. * public class Interval { * int sta...

JAVA 利用Comparator实现自定义排序

/* 有个Person类,包括姓、名、性别、年龄属性:现在有个需求,需要对Person进行以下规则的排序  * 谁的姓拼音靠前,谁就排前面。  * 然后对名字进行排序。如果同名,女性排前头。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:按照字符串中数字大小利用Comparator排序
举报原因:
原因补充:

(最多只允许输入30个字)