我有一个名为Suffix
的自定义类型的对象,其定义为
class Suffix
{
int index;
String suff;
}
我创建了一个类型为suffix
的对象数组Suffix s[] = new Suffix[10];
我需要根据字符串suff
数据成员对其进行排序。我怎样才能做到这一点?我无法理解在线提供的大多数自定义实现。
例如: 如果我有s [0] .suff =" hats",s [1] .suff =" ats",s [2] .suff =" ts" 。现在我需要根据后缀对这个数组进行排序。
("ats",1) , ("hats",0) and ("ts",2)
应按顺序排序。
答案 0 :(得分:2)
如果您的对象扩展了Comparable接口,则可以使用Arrays.sort(..)。
class Suffix implements Comparable<Suffix>
{
int index;
String suff;
@Override
public int compareTo(Suffix o) {
return this.suff.compareTo(o.suff);
}
}
您现在可以使用
Suffix s[] = new Suffix[10];
Arrays.sort(s);
答案 1 :(得分:1)
你有三种可能性:
编写自己的排序算法并比较suff
字符串。
在Comparable<>
类中实现Suffix
接口,覆盖comparteTo()
方法并使用Arrays.sort();
,它将Compareable对象数组作为参数。
Wirte Comparator<>
并使用Arrays.sort()
方法获取数组和比较器。
第三种方式有一个优势。如果您想按index
而不是suff
param进行排序,则可以将另一个比较器传递给sort()
方法。
Suffix s[] = new Suffix[10];
Comparator comp = new Comparator<Suffix>(){
@Override
public int compare(Suffix arg0, Suffix arg1)
{
return arg0.suff.compareTo(arg1.suff);
}
};
Arrays.sort(s,comp);
您的Suffix
课程无需更改。提示:您可以使用比较器作为静态字段来创建一个额外的类。
答案 2 :(得分:1)
除了使用Comparable作为@ insert-username-here和@vinayknl之外,另一个是使用Comparator。在要排序的方法内添加以下内容:
Comparator comparator = new Comparator<Suffix>() {
public int compare(Object o1, Object o2) {
Suffix s1 = (Suffix) o1;
Suffix s2 = (Suffix) o2;
return s1.getSuff().compareTo(s2.getSuff());
}
}
Array.sort(s, comparator);
注意:不要忘记添加getter。
答案 3 :(得分:0)
查看Comparable界面。此界面将允许您的类根据您自己的标准进行比较。
快速谷歌搜索提出了this helpful page。