[英]Sorting array objects Java
对于此作业,我们将创建一个不大于10且其元素为Animal类型的数组(Animal是我们必须创建的对象)。 提示用户输入有关动物的信息(名称,手臂,腿的数量),并将该信息存储到阵列的每个动物对象中。
然后,该程序应该计算四肢的总数,并根据计算出的数目从最大到最小对数组进行排序。
这是代码:
public static void sortArray (Array [] name)
{
// This method will take in the array and sort it based
// on the number of limbs from greatest to least.
int maxLimbs = 0;
for (int j = 0; j < name.length; j++) {
int limbValue = name[i].getNumberOfLimbs();
if (limbValue > maxLimbs) {
maxLimbs = limbValue;
// Store the max value in the first position
name[0] = name[i];
}
}
}
我知道这是在寻找最大值并将其放在第一位,但是我正在努力使它排序其余元素。 关于如何解决此问题的任何建议,它将对整个数组进行排序并按从大到小的顺序排序?
还是已经有一种排序方法可用于以对象为对象的数组? 我对此并不陌生,因此我仍在尝试掌握一些概念。 感谢您的帮助。
您可以使用Arrays.sort方法
public static <T> void sort(T[] a, Comparator<? super T> c)
您应该给它一个数组和一个比较器,该比较器知道如何比较两个动物对象
或者你可以使用
public static void sort(Object[] a)
这需要您的元素的类实现Comparable接口
public class SortAnimals {
public static void main(String[] args) {
Animals[] animals = new Animals[3];
animals[0] = new Animals("Animal1",0,4);
animals[1] = new Animals("Animal2",2,6);
animals[2] = new Animals("Animal3",1,1);
Arrays.sort(animals,Collections.reverseOrder());
for (int i = 0; i < animals.length; i++) {
Animals animals2 = animals[i];
System.out.println(animals2);
}
}
}
class Animals implements Comparable<Animals>{
private String name;
private int hands;
private int legs;
//getters and setters omitted for brevity
Animals(String name, int hands, int legs){
this.name = name;
this.hands = hands;
this.legs = legs;
}
@Override
public int compareTo(Animals o) {
int totalLimbs = this.hands + this.legs;
return totalLimbs - (o.hands + o.legs);
}
@Override
public String toString() {
return "Animals [name=" + name + ", hands=" + hands + ", legs=" + legs
+ "]";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.