java - Object类型的数组,并比较数组内的对象

标签 java arrays object

我正在创建一个对象类型的数组。我有两个不同的类,员工和人员,它们具有简单的属性,如姓名、工资(员工)名字、出生日期(人员)。我需要将一些 Employee 和 Person 对象添加到我的数组中,并比较数组中的某些内容。例如,从数组中检索最年轻的 Person。

public class Driver {

public static void main(String[] args) {
    Employee e1 = new Employee("Den", 2000);

    Employee e2 = new Employee("Jon", 1004);

    Person p1 = new Person("Pen", "Tel", "1993");
    Person p2 = new Person("Jon", "Smith", "1933");

    Object [] crr;
    crr = new Object[4];
    crr[0] = e1;
    crr[1] = p1;
    crr[2] = p2;
    crr[3] = e2;
    System.out.println();
    new Driver().printObjectArray("array crr", crr);

}
public void printObjectArray(String arrayName, Object [] array){
    for (int i = 0; i < array.length; i++){
        System.out.println(arrayName + "["+ i +"]" + array[i].toString());
    }
    System.out.println("--------------------");
}   
}

我如何比较数组上的某些内容。就像打印最年轻的人一样,这意味着我必须查看数组并查看它是否是 Person 对象,然后在这些对象上 getDateOfBirth 并打印最年长的人。

最佳答案

public Person getYoungestPerson(Object [] arr){

    int i=0; Person youngest;
    while(person == null){
      if(arr[i] instanceof Person) youngest = arr[i];
      i++;
      }
     for(i=0;i<arr.length;i++){ if (arr[i] instanceof Person) 
            if(arr[i].getDateOfBirth()<youngest.getDateOfBirth()) 
               youngest= arr[i];}
   return youngest;
}

理想情况下,Employee 应该是 Person 的子类,并且您将拥有一个 Person 数组。如果你想要 only Persons,你必须小心,因为 instanceof 也为所有子类返回 true,这不是你的情况,因为 Employee 不扩展 Person,只是一个展望 future 。

关于java - Object类型的数组,并比较数组内的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14741247/

相关文章:

java - 这个 JPanel 代码好吗?单击按钮时不显示其他 JPanel

java - Android 从数组中随机动态改变背景

java - 使用 ArrayList 填充 ListView?

c - C 中访问数组元素的不同方式

javascript - 为什么键值对中的 ":"在控制台中打印时转换为 =。

javascript - AngularJS:对象、数组、JSON、API 问题

java - 从 java.sql.PreparedStatement 获取查询

c++ - 使用 new 为 unsigned char 数组分配内存失败

javascript - 选中复选框时形成对象数组 angularjs

javascript - 数组到动态函数: Use eval or not?