基于字符串成员对对象java进行排序

时间:2014-07-03 14:01:16

标签: java sorting

我有一个名为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)应按顺序排序。

4 个答案:

答案 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)

你有三种可能性:

  1. 编写自己的排序算法并比较suff字符串。

  2. Comparable<>类中实现Suffix接口,覆盖comparteTo()方法并使用Arrays.sort();,它将Compareable对象数组作为参数。

  3. Wirte Comparator<>并使用Arrays.sort()方法获取数组和比较器。

  4. 第三种方式有一个优势。如果您想按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