按照字符串中数字大小利用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);
}

Java集合排序方法comparable和comparator的总结

本文对java集合实现类的排序做了比较详细的总结,也有很详细的代码讲解。
  • wenzhi20102321
  • wenzhi20102321
  • 2016年09月10日 12:53
  • 4358

使用Comparator对List排序

废话不多说,直接上代码。 UserVO.java package com.lrb.sort.test; import java.io.Serializable; public cl...
  • lrbyantai
  • lrbyantai
  • 2011年12月09日 10:36
  • 7850

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

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

Collections的自定义排序sort Comparator

下面的实例是把map中的Value值根据中文名的拼音字母升序排序! 该类型自定义排序在项目中经常用到, 比如下拉框中的值(比如国家,中国放在首位)等等需要按照一定的规则显示。 ...
  • winy_lm
  • winy_lm
  • 2015年09月24日 14:51
  • 768

java Comparator 特定顺序排序 固定值排序

ArrayList cs = new ArrayList(); CrewRank c1 = new CrewRank(); c1.setRankSd("客舱经理"); CrewRank c2 = ne...
  • lix909
  • lix909
  • 2016年09月19日 17:20
  • 963

[Java 8] (3) 字符串遍历和Comparator接口

遍历一个字符串 在Java 8中,CharSequence接口新添加了一个方法叫做chars(),方法的签名是这个样子的: public default IntStream chars() ...
  • dm_vincent
  • dm_vincent
  • 2014年10月23日 09:16
  • 10080

TreeMap Comparator按照首字母排序

/** * @Modified by FANGYUKANG * @Description 查询配件类型列表 * @return {@link JsonView} * * URL ...
  • weinichendian
  • weinichendian
  • 2016年05月24日 15:24
  • 1123

实现按字母表排序的Comparator

/** * 按字母表对Collection列表进行排序 * */ public class AlphabetComparator implements Comparator { ...
  • ygc87
  • ygc87
  • 2012年03月26日 10:41
  • 3050

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

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

我的Java开发学习之旅------>Java利用Comparator接口对多个排序条件进行处理

一需求 二实现Comparator接口 三验证排序结果 验证第一条件首先按级别排序级别最高的排在前面 验证第二条如果级别相等那么按工资排序工资高的排在前面 验证第三条如果工资相当则按入职年数排序入职时...
  • qq446282412
  • qq446282412
  • 2016年08月02日 15:19
  • 1898
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:按照字符串中数字大小利用Comparator排序
举报原因:
原因补充:

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