Improvements for 5.3

generic-observer
Selebrator 7 years ago
parent e0f8a9360e
commit cfedacde33

@ -1,26 +1,26 @@
package _5._3;
import java.util.LinkedList;
import java.util.List;
public class Group<T extends Older> {
private LinkedList<T> members = new LinkedList<>();
public class Group<T extends Older<T>> {
private List<T> members = new LinkedList<>();
public void add(T member) {
this.members.add(member);
}
public T getOldest() {
if (members.isEmpty()) {
if(this.members.isEmpty()) {
return null;
}
T oldestMember = members.get(0);
for (int i=1; i<members.size(); i++) {
if (members.get(i).isOlder(oldestMember)) {
oldestMember = members.get(i);
T oldest = this.members.get(0);
for(int i = 1; i < this.members.size(); i++) {
if(this.members.get(i).isOlder(oldest)) {
oldest = this.members.get(i);
}
}
return oldestMember;
return oldest;
}
}

@ -1,7 +1,5 @@
package _5._3;
public interface Older<T> {
public boolean isOlder(T other);
public int getAge();
boolean isOlder(T other);
}

@ -1,6 +1,6 @@
package _5._3;
public class Person<T extends Older> implements Older<T> {
public class Person implements Older<Person> {
private String name;
private int age;
@ -9,15 +9,16 @@ public class Person<T extends Older> implements Older<T> {
this.age = age;
}
public int getAge() {
return age;
@Override
public boolean isOlder(Person other) {
return this.getAge() > other.getAge();
}
public String getName() {
return name;
public int getAge() {
return this.age;
}
public boolean isOlder(T other) {
return this.age > other.getAge();
public String getName() {
return this.name;
}
}

@ -0,0 +1,14 @@
package provided._5._3;
import _5._3.Group;
import _5._3.Person;
public class TestGroup {
public static void main(String[] args) {
Group<Person> group = new Group<>();
group.add(new Person("Alice", 25));
group.add(new Person("Bob", 23));
group.add(new Person("Carl", 26));
System.out.println(group.getOldest().getName());
}
}
Loading…
Cancel
Save