Como classificar uma matriz de objetos contendo elementos nulos?
No meu programa uma matrizfClasses
de comprimento fixo [7] de objetos é criado, cada objeto é uma classeFClass
que contém 3Strings
, aint
, e umint[]
. Esses valores são lidos a partir de um arquivo .txt e adicionados a um índice específico da matriz com base no valor doint
. Existem menos entradas no arquivo .txt e há índices na matriz, de modo que a matriz acaba com algo parecido com isto:
fClasses[0] { str1, str2, str3, int1, int [] {1,2,3,4,5}}
fClasses[1] { str1, str2, str3, int1, int [] {1,2,3,4,5}}
fClasses[2] { str1, str2, str3, int1, int [] {1,2,3,4,5}}
fClasses[3] null
fClasses[4] null
fClasses[5] { str1, str2, str3, int1, int [] {1,2,3,4,5}}
fClasses[6] { str1, str2, str3, int1, int [] {1,2,3,4,5}}
Posteriormente no programa, eu preciso classificar o array com base na média doints
noint[]
. Eu tenho um método de trabalho para retornar isso, mas quando tento classificar a matriz usandocompareTo
eArrays.sort
Eu recebo uma longa lista de erros começando com estes:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at FProg.sortClasses(FProg.java:228)
MinhascompareTo
método se parece com isso e está localizado em uma classe que implementaComparable
:
public int compareTo(FClass other)
{
if (other == null || this.avg == other.avg)
{
return 0;
}
else if (this.avg < other.avg)
{
return -1;
}
else
{
return 1;
}
}
E estou tentando chamar esse método para fazer a classificação:
public void sortClasses()
{
Arrays.sort(fClasses, 0, MAX_CLASSES);
}
Eu testei-o com um arquivo .txt que contém entradas suficientes para preencher a matriz e a classificação funciona corretamente nesse caso; portanto, acredito que o problema que estou tendo é que meu método de classificação não pode classificar uma matriz com elementos nulos em isto. Existe alguma maneira de conseguir isso?