Improvements for 5.3

generic-observer
Selebrator 7 years ago
parent e0f8a9360e
commit cfedacde33

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

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

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