Java 按降序排列字符串的ArrayList

Java 按降序排列字符串的ArrayList,java,sorting,Java,Sorting,可能重复: 我有一个字符串的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进行排序 i、 e.排序后的列

可能重复:

我有一个字符串的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进行排序

i、 e.排序后的列表应如下所示

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

有人能告诉我怎么做吗?

正如@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;
        }
    }
比较器c=新比较器() { @凌驾 公共整数比较(字符串o1、字符串o2) { 返回getNumber(o1)。与(getNumber(o2))进行比较; } 私有整数getNumber(字符串str) { Pattern=Pattern.compile(“[0-9]+”); Matcher-Matcher=pattern.Matcher(str); while(matcher.find()){return Integer.parseInt(matcher.group(1));} 返回0; } }
干杯,

正如@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;
        }
    }
比较器c=新比较器() { @凌驾 公共整数比较(字符串o1、字符串o2) { 返回getNumber(o1)。与(getNumber(o2))进行比较; } 私有整数getNumber(字符串str) { Pattern=Pattern.compile(“[0-9]+”); Matcher-Matcher=pattern.Matcher(str); while(matcher.find()){return Integer.parseInt(matcher.group(1));} 返回0; } } 干杯

  • 您必须能够从strig中提取数字。正则表达式会有所帮助
  • 你必须能够比较这些数字。会有帮助的
  • 如果你有这些,你只需要打电话

    Collections.sort(yourLIstWithString,newyournumbersinstringcomparator())

  • 您必须能够从strig中提取数字。正则表达式会有所帮助
  • 你必须能够比较这些数字。会有帮助的
  • 如果你有这些,你只需要打电话


    Collections.sort(yourLIstWithString,newyournumbersinstringcomparator())

    我使用simple for循环进行了尝试。我所做的是,首先将字符串中的整数拆分,并将它们放入新列表中,然后对该数字列表进行排序,然后再次对包含已排序数字列表中的数字的字符串使用for循环检查。它起作用了。。但我想通过doc使用comparatorGo。。特别是:-,java.util.Comparator)我使用SimpleFor循环进行了尝试。我所做的是,首先将字符串中的整数拆分,并将它们放入新列表中,然后对该数字列表进行排序,然后再次对包含已排序数字列表中的数字的字符串使用for循环检查。它起作用了。。但我想通过doc使用comparatorGo。。特别是:-,java.util.Comparator)@Anders+1您可以在每个括号之后和之前删除多余的空格。。循规蹈矩……它的作品。。。。如何按降序排序???@Pratik只需返回
    -getNumber(o1)。compareTo(getNumber(o2))
    。完成。。。。现在我得到的是降序排序列表。谢谢,我使用了Collections.reverseOrder(Comparator c)@Pratik,您可以通过阅读文档对其进行向下排序。@Anders+1您可以在每个括号之后和之前删除多余的空格。。循规蹈矩……它的作品。。。。如何按降序排序???@Pratik只需返回
    -getNumber(o1)。compareTo(getNumber(o2))
    。完成。。。。现在我得到的是降序排序列表。谢谢我使用了Collections.reverseOrder(Comparator c)@Pratik,您可以通过阅读文档对其进行排序。