2

我做了一个类如下:

class strVal{
    double val;
    String str;
}

现在我制作了这个类的一个数组,现在我想对该数组进行排序strVal.val。我想知道Java中是否有任何标准定义的方法?

4

7 回答 7

8

实现 java.lang.Comparable 接口,并使用 java.util.Arrays.sort(...) 对 StrVal 的数组进行排序:

public class StrVal implements Comparable<StrVal> {

  private double val;
  private String str;

  public StrVal(double val, String str) {
    this.val = val;
    this.str = str;
  }

  @Override
  public int compareTo(StrVal o) {
    return (int)(this.val - o.val);
  }

  public double getVal() {
    return val;
  }

  public String getStr() {
    return str;
  }
}

对数组进行排序:

StrVal[] array;

...

Arrays.sort(array)
于 2013-06-27T06:52:12.747 回答
2

Collections.sort 可能会对您有所帮助。使用一个List<strVal>然后:

Collections.sort(list, comparator);

更多代码:

List<strVal> list = ...;
Collections.sort(list, new Comparator<strVal>()
                        {
                            @Override
                            public int compare(strVal o1, strVal o2)
                            {
                                return o1.val - o2.val;
                            }
                        });

或者,如果您不想使用列表,请使用Arrays.sort(array, comparator).

于 2013-06-27T06:41:23.560 回答
2

您需要实现ComparatorComparable接口,然后在您的类 strVal 的对象集合上调用Collections.sort 。按照本教程了解有关集合排序的更多信息:

http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/

于 2013-06-27T06:41:45.060 回答
0

现在我创建了一个此类的数组,现在我想按 strVal.val 对该数组进行排序。

您可以实现Comparator,覆盖它的compare()方法并使用Arrays.sort()

如果您使用List<strVal>Collections.sort ()

如果您认为类对象的比较只能通过其val属性来完成,并且该属性定义了对象的自然顺序,那么您的类可以实现Comparable

比较器:

new Comparator<strVal>()
{
     @Override
     public int compare(strVal o1, strVal o2)
     {
          return o1.val - o2.val;
     }
});

可比:

class strVal implements Comparable<strVal>{
    double val;
    String str;

    @Override
    public int compareTo(strVal o) {
         return this.val - o.val;
    }   
}

Ps:请遵守Java命名约定。

于 2013-06-27T06:41:37.903 回答
0

您必须为此实现可比较的接口,并使您的 val 字段成为进行比较的字段。

更多信息在这里:http ://www.javapractices.com/topic/TopicAction.do?Id=10

于 2013-06-27T06:41:44.277 回答
0

您需要实现Comparable -interface 并使用集合的排序方法

于 2013-06-27T06:41:46.053 回答
0

您应该使用实用程序类sort中定义的方法。Arrays

为了根据您的键进行排序,您应该让您的类实现Comparable或提供一个Comparator.

于 2013-06-27T06:45:53.263 回答