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;
}
}
干杯
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,您可以通过阅读文档对其进行排序。