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()); } }


上一篇:
下一篇:
切换中文