java中按类字段对数组排序
有人能帮我解决java中的以下问题吗。我有一个简单的类,定义如下:java中按类字段对数组排序,java,arrays,sorting,Java,Arrays,Sorting,有人能帮我解决java中的以下问题吗。我有一个简单的类,定义如下: public class Expr { public long total_apparitions; public String expression=new String(); public Expr(long total,String expr){ this.total_apparitions=total; this.expression=expr; } public void inc
public class Expr {
public long total_apparitions;
public String expression=new String();
public Expr(long total,String expr){
this.total_apparitions=total;
this.expression=expr;
}
public void increment(long aparitions){
total_apparitions+=aparitions;
}
}
我想使用Arrays.sort内置函数,通过total_appreations字段对Expr对象数组进行排序。如何为Arrays.sort函数指定比较因子?非常感谢。让Expr实现java.lang.com
编辑-应该提供其他人已经提供的示例。下面是使用泛型的完整示例
public class Expr implements Comparable<Expr>
{
public long total_apparitions;
public String expression = new String();
public Expr(long total, String expr)
{
this.total_apparitions = total;
this.expression = expr;
}
public void increment(long aparitions)
{
total_apparitions += aparitions;
}
public int compareTo(Expr o)
{
if (total_apparitions > o.total_apparitions)
{
return 1;
}
else if (total_apparitions < o.total_apparitions)
{
return -1;
}
else
{
return 0;
}
}
}
正如@Jason Braucht所说,实现类似的功能:
public class Expr implements Comparable {
...
public int compareTo(Object o) {
if(this.total_apparitions > ((Expr) o).total_apparitions)
return 1;
else if(this.total_apparitions < ((Expr) o).total_apparitions)
return -1;
return 0;
}
}
作为实现Comparable的替代方法,您可以将Comparator实例传递给Arrays.sort方法。这样做的好处是,它允许您对这种类型的对象数组有不同的排序概念,比如您以后可能希望按名称排序,在这种情况下,您只需要使用不同的比较器实现 例如:
public class ByApparationsComparator implements Comparator<Expr> {
public int compare(Expr first, Expr second) {
if (first.total_apparitions > second.total_apparitions) {
return 1;
} else if (first.total_apparitions < second.total_apparitions) {
return -1;
} else {
return 0;
}
}
}
但这让他的电话号码看起来很拥挤。实现Comparable使所有内容都更易于阅读,并允许他在需要时轻松调用sort。这取决于您是否希望在以后的某个阶段按其他内容进行排序。如果只有一个自然排序顺序,那么实现Compariable就是一条路。
Arrays.sort(exprArray, new ByApparationsComparator());