我做了一个类如下:
class strVal{
double val;
String str;
}
现在我制作了这个类的一个数组,现在我想对该数组进行排序strVal.val
。我想知道Java中是否有任何标准定义的方法?
实现 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)
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)
.
您需要实现Comparator或Comparable接口,然后在您的类 strVal 的对象集合上调用Collections.sort 。按照本教程了解有关集合排序的更多信息:
http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/
现在我创建了一个此类的数组,现在我想按 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命名约定。
您必须为此实现可比较的接口,并使您的 val 字段成为进行比较的字段。
更多信息在这里:http ://www.javapractices.com/topic/TopicAction.do?Id=10
您需要实现Comparable -interface 并使用集合的排序方法
为了根据您的键进行排序,您应该让您的类实现Comparable
或提供一个Comparator
.