O mais interessante aqui é que a classe é genérica, o que permite a ordenação de qualquer tipo de objeto. O objeto nem precisa ser numérico, basta que implementa a interface Comparable
public class funcionario implements Comparable<funcionario>{ private String nome; private int matricula; public funcionario(String nome, int matricula){ this.nome=nome; this.matricula=matricula; } public String getNome(){ return nome; } public int getValue() { return this.matricula; } public int compareTo(funcionario o){ if (this.matricula < o.matricula) { return -1; } if (this.matricula == o.matricula) { return 0; } assert this.matricula > o.matricula; return 1; } }