0

可能重复:
按属性对自定义对象的 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

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

即排序列表应该看起来像

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

谁能告诉我该怎么做?

4

2 回答 2

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;
        }
    }

干杯,

于 2012-10-10T07:26:12.287 回答
1
  1. 您必须能够从字符串中提取数字。正则表达式会有所帮助
  2. 您必须能够比较这些数字。比较器将提供帮助

如果你有那些你只需要打电话

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

于 2012-10-10T07:30:38.480 回答