import java.util.AbstractCollection;
import java.util.Iterator;
public class MyCollection<E> extends AbstractCollection<E> {
private Object[] elements;
private int size;
public MyCollection() {
this.elements = new Object[16];
this.size = 0;
}
@Override
public Iterator<E> iterator() {
return new MyIterator();
}
@Override
public int size() {
return size;
}
@Override
public boolean add(E element) {
elements[size++] = element;
return true;
}
private class MyIterator implements Iterator<E> {
private int currentIndex = 0;
@Override
public boolean hasNext() {
return currentIndex < size;
}
@Override
public E next() {
return (E) elements[currentIndex++];
}
@Override
public void remove() {
throw new UnsupportedOperationException("remove");
}
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Person> persons = new ArrayList<>();
persons.add(new Person("Alice", 25));
persons.add(new Person("Bob", 30));
persons.add(new Person("Charlie", 20));
Collections.sort(persons, new AgeComparator());
for (Person person : persons) {
System.out.println(person.getName() + ", " + person.getAge());
}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return Integer.compare(p1.getAge(), p2.getAge());
}
}