package com.example.first;
import java.util.*;
public class Person implements Comparable
{
	private String name;
	private int length;
	public Person(String name, int length)
	{
		this.name = name;
		this.length = length;
	}
	public String getName()
	{
		return this.name;
	}
	public int getLength()
	{
		return this.length;
	}
	public int compareTo(Object o) throws ClassCastException
	{
		if (o instanceof Person)
		{
			int length = ((Person)o).getLength();
			if (length < this.length) return 1;
			else if (length > this.length) return -1;
			else return 0;
		} else {
			throw new ClassCastException("wrong object");
		}
	}
	public static void main(String[] args) 
	{
		Person p1 = new Person("Test1", 20);	
		Person p2 = new Person("Test2", 19);
		List<Person> p = new ArrayList<Person>();
		p.add(p1);
		p.add(p2);
		printList(p);
		Collections.sort(p);
		printList(p);
	}
	private static void printList(List<Person> list)
	{
		for (Iterator<Person> itr = list.iterator(); itr.hasNext();)
		{
			Person p = itr.next();
			System.out.println("Name: " + p.getName());
			System.out.println("Age: " + p.getLength());
		}
	}
}
	Чем не подходит внутренний класс? Все равно использоваться он будет через публичный интерфейс.akl, compareTo не подходит, т.к. условий сортировки может быть несколько (по каждому из полей класса, к примеру).
Сделал каждый компаратор отдельным публичным классом.
class Person
{
    private Integer age;
    private String name;
    public static final Comparator<Person> AGE_COMPARATOR =
        new Comparator<Person>() {
            public int compare(Person a, Person b) {
                return a.age.compareTo(b.age); }};
}
	Между прочим внутренние классы могут быть и публичными.Добрый вечер. Как правильно написать Comparator к классу? Проблема в том, что класс, к которому пишется Comparator, и вызов сортировки будет в разных пакетах. Поэтому не получится написать внутренний класс, как я обычно делал.
class Person
{
    public static class AgeComparator implements Comparator<Person> { }
}
	Этот момент я упустил... Спасибо!Между прочим внутренние классы могут быть и публичными.
Код:class Person { public static class AgeComparator implements Comparator<Person> { } }