按降序排序字符串的ArrayList

时间:2012-10-10 07:22:18

标签: java sorting

  

可能重复:
  Sort ArrayList of custom Objects by property

我有一个String的arrayList,其中包含以下字符串

Common Ruby Errors 45min
Rails for Python Developers lightning
Communicating Over Distance 60min
Accounting-Driven Development 45min
Woah 30min
Sit Down and Write 30min

现在我想根据每个字符串中提到的数字按降序对arraylist进行排序

即。排序列表应该看起来像

Communicating Over Distance 60min
Common Ruby Errors 45min
Accounting-Driven Development 45min
Woah 30min
Sit Down and Write 30min
Rails for Python Developers lightning

任何人都可以告诉我该怎么做?

2 个答案:

答案 0 :(得分:3)

正如@Rohit建议的那样,你的任务是双重的

  • 弄清楚如何提取您想要排序的属性(数字)
  • 撰写使用上述方法的Comparator并执行sortedList = Collections.sort( list , new YourComparator() )

这样的事情可能是可行的:

    Comparator c = new Comparator<String>()
    {
        @Override
        public int compare( String o1, String o2 )
        {
            return getNumber( o1 ).compareTo( getNumber( o2 ) );
        }

        private Integer getNumber( String str ) 
        {
            Pattern pattern = Pattern.compile("([0-9]+)");
            Matcher matcher = pattern.matcher(str);
            while ( matcher.find() ) { return Integer.parseInt( matcher.group( 1 ) ); }

            return 0;
        }
    }

干杯,

答案 1 :(得分:1)

  1. 您必须能够从strig中提取数字。正则表达式将帮助
  2. 您必须能够比较这些数字。 Comparator会有所帮助
  3. 如果你有那些你只需要打电话

    Collections.sort(yourLIstWithString, new YourNumberInStringComparator());