有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何调用ArrayList中的每个数组并按年龄对ArrayList进行排序?

在我的任务中,我被要求执行以下任务:

  • 比较动物的年龄,以便从最高年龄到较低年龄排序

我已经创建了if语句,如果我是正确的,那么应该这样做,但我不确定如何引用数组列表中的每一只动物,所以我使用了伪代码,并将ArrayList中的第一个数组引用为“AL1”,第二个数组引用为“AL2”,依此类推

以下是代码:

演示课程

import java.util.ArrayList;
public class Demo {

    public static ArrayList<Animal> animalGroup; // make this an instance static variable to access in other class with main method;

    public static void main(String[] args) 
{
                   animalGroup = new ArrayList<>();

 //Add new Animals with properties such as name and age?           
animalGroup.add(new Wolf("Sam", 5));
animalGroup.add(new Parrot("George", 3));
animalGroup.add(new Wolf("Wesley", 7));
animalGroup.add(new Parrot("Pat", 10));

System.out.println("Compare Aimal ages" + AL1.getAge().compareTo(AL2.getAge, AL3.getAge(), AL4.getAge()));

int result = AL1AGE.compareTo(AL2AGE, AL3AGE, AL4AGE);

if(result == 3)
    System.out.println(AL1.getName() + "comes before " + AL2.getName() + ", " + AL3.getName() + " and " + A|L4.getName());
if(result == 5)
        System.out.println(AL2.getName() + "comes before " + AL3.getName() + ", " + AL4.getName() + " and  after " + A|L1.getName());
if(result == 7)
            System.out.println(AL3.getName() + "comes before " + AL4.getName() + " and after " + AL1.getName() + " and " + A|L2.getName());
else
                System.out.println(AL4.getName() + "comes after " + AL1.getName() + ", " + AL2.getName() + " and " + A|L3.getName());

}

}

主方法调用

import java.util.ArrayList;
import java.util.Collections;

public class Main {


    public static void main(String[] args) 
    {

    System.out.println("************ArrayList after sorting************");


Collections.sort(animalGroup);
Collections.reverse(animalGroup);

for(Animal animal2 : animalGroup) {
         System.out.println(animal2.getName()+","+animal2.getAge());
}
}
}

期望输出

Sam comes before George, Wesley and Pat
George comes before Wesley, Pat and after Sam
Wesley comes before Pat and after Sam and George
Pat comes after Sam, George and Wesley

如果您能为我们提供帮助,我们将不胜感激,谢谢


共 (1) 个答案

  1. # 1 楼答案

    如果您使用的是Java-8,则可以使用comparator和lambda对列表进行排序,如下所示:

    动物群。排序((动物组r1,动物组r2)->;r1。getAge()-r2。getAge())