Amigo não sei qual seu objetivo, porém utilizando a lib Collections sugiro seguir os seguintes passos:
1 - alimente sua lista sem se preocupar com a ordem
2 -ordene conforme sua regra
3 - imprima
Abaixo um exemplo
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Teste {
public static void main(String[] args) {
// jogue seus objetos na lista de qualquer jeito. Apenas adicione. ( Sua classe
// deve implementar Comparable)
List<Obj> obj = new ArrayList<>();
obj.add(new Obj(1, 1f, "jão1"));
obj.add(new Obj(3, 2f, "jão2"));
obj.add(new Obj(2, 3f, "jão3"));
obj.add(new Obj(4, 4f, "jão4"));
obj.add(new Obj(5, 5f, "jão5"));
// imprime desordenada
imprime(obj);
System.err.println("----------------------");
// ordena a lista de acordo com a regra definida no metodo compare to na sua
// classe
Collections.sort(obj);
// imprime ordenada
imprime(obj);
System.err.println("----------------------");
// reverte a ordem se for necessario
Collections.reverse(obj);
// imprime ordenada com ordem invertida
imprime(obj);
}
private static void imprime(Iterable<Obj> obj) {
obj.forEach(p -> {
System.out.println(p.getMat() + " - " + p.getNota() + " - " + p.getNome());
});
}
}
class Obj implements Comparable<Obj> {
int mat;
Float nota;
String nome;
public Obj(int mat, Float nota, String nome) {
super();
this.mat = mat;
this.nota = nota;
this.nome = nome;
}
public int getMat() {
return mat;
}
public void setMat(int mat) {
this.mat = mat;
}
public Float getNota() {
return nota;
}
public void setNota(Float nota) {
this.nota = nota;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public int compareTo(Obj outroobjeto) {
// escolha aqui qual será o atributo usado para ordenar a lista neste exemplo
// usei o parametro mat
if (this.mat > outroobjeto.getMat()) {
return -1;
}
if (this.mat < outroobjeto.getMat()) {
return 1;
}
return 0;
}
}