import java.util.ArrayList; import java.math.BigInteger; class Person implements Comparable { public Person( String n, int a ) { name = n; age = a; } public String getName( ) { return name; } public int getAge( ) { return age; } public String toString( ) { return getName( ) + " whose age is " + getAge( ); } public int compareTo( Person rhs ) { return age - rhs.age; } private String name; private int age; } class Student extends Person { public Student( String n, int a, double g ) { super( n, a ); gpa = g; } public double getGPA( ) { return gpa; } public String toString( ) { return super.toString( ) + " gpa " + getGPA( ); } private double gpa; } class Employee extends Person { public Employee( String n, int a, double s ) { super( n, a ); salary = s; } public double getSalary( ) { return salary; } public String toString( ) { return super.toString( ) + " $" + getSalary( ); } private double salary; } class May17 { public static Person getOlder( Person p1, Person p2 ) { return p1.getAge( ) > p2.getAge( ) ? p1 : p2; } public static int findMax( int [ ] arr ) { int max = arr[ 0 ]; for( int i = 1; i < arr.length; i++ ) if( arr[ i ] > max ) max = arr[ i ]; return max; } public static > AnyType findMax( AnyType [ ] arr ) { AnyType max = arr[ 0 ]; for( int i = 1; i < arr.length; i++ ) if( arr[ i ].compareTo( max ) > 0 ) max = arr[ i ]; return max; } // arr.length >= 1 public static Person getOldest( Person [ ] arr ) { Person oldest = arr[ 0 ]; for( int i = 1; i < arr.length; i++ ) if( arr[ i ].getAge( ) > oldest.getAge( ) ) oldest = arr[ i ]; return oldest; } public static void main( String [ ] args ) { Person p1 = new Person( "Bob", 65 ); Person p2 = new Person( "Ann", 47 ); System.out.println( p1 ); System.out.println( p2 ); System.out.println( "Older person is " + getOlder( p1, p2 ) ); Student s1 = new Student( "Jack", 27, 3.6 ); Student s2 = new Student( "Jill", 29, 3.8 ); System.out.println( s1 ); System.out.println( s2 ); System.out.println( "Older student is " + getOlder( s1, s2 ) ); Employee e1 = new Employee( "Bill", 21, 38500 ); Employee e2 = new Employee( "Jane", 66, 95000 ); System.out.println( e1 ); System.out.println( e2 ); System.out.println( "Older employee is " + getOlder( e1, e2 ) ); System.out.println( getOlder( e1, s1 ) ); Person [ ] arr1 = { p1, p2, s1, s2, e1, e2 }; System.out.println( "Oldest of all persons is " + getOldest( arr1 ) ); Student [ ] arr2 = { s1, s2 }; System.out.println( "Oldest of all students is " + getOldest( arr2 ) ); int [ ] arr6 = { 3, 1, 4, 8, 2, 5 }; System.out.println( findMax( arr6 ) ); String [ ] arr7 = { "hello", "world", "zebra", "any" }; System.out.println( findMax( arr7 ) ); BigInteger[ ] arr8 = { new BigInteger( "12345" ), new BigInteger( "7777" ) }; System.out.println( findMax( arr8 ) ); System.out.println( findMax( arr1 ) ); Student max = findMax( arr2 ); System.out.println( max ); } }