Grato pessoal,
Mas eu achei meio complicado tentar implementar este Comparator agora, pois to aprendendo o básico ainda(primeira cadeira de Algorítmos e programação O.O), não por falta de interesse, mas porque estou no fim do semestre e tenho mais trabalhos e provas pra me dedicar, semestre que vem vou começar a me aprofundar mais em AlproII(algoritmos e programação II), por enquando é o básico mesmo, achei melhor e mais rápido fazer do método mais fácil(embora bem pouco eficiente), usando o método set do Arraylist passando a posição … com o velho Bubble Sort.
dai pra mim ordenar meu arrayList de filmes por notas e com desempate por votos ficou assim:
// ordena filmes por nota,desempate por votos.
public void ordenaPorNota() {
Filme a = null, b=null;
boolean ordenado = false;
while(ordenado == false){
ordenado = true;
for (int pos=0; pos < lista.size();pos++){
if (pos+1 < lista.size()){
a = lista.get(pos); // lista é o Arraylist de Filmes
b= lista.get(pos+1);
if(a.getNota() < b.getNota()){
ordenado = false;
lista.set(pos,b);
lista.set(pos+1,a);
}
else if (a.getNota() == b.getNota()) {
if (a.getVotos() < b.getVotos()) {
ordenado = false;
lista.set(pos,b);
lista.set(pos+1,a);
}
}
}
}
}
}
Foi a primeira tentativa e funcionou, mas deve dar pra otimizar mais… Acho que poderia ter posto o for indo só até list.size()-1… mas assim ta legal já.
Agora se puderem me tirar mais uma dúvida, que é do mesmo trabalho, mas não sei se precisa criar outro tópico.
É o seguinte: preciso listar todos os filmes de um ator… A princípio é só criar um método que retorna uma String e percorrer o arrayList de filmes e ir comparando o nome de um ator passado por parâmetro no método com o atributo do filme “ator”, só que o ator ta dentro de outro arrayList do tipo Personagens (que guarda nome do astro e o nome do ator) .
A questão e: Como chegar neste ator para comparar com a ator que passo por parâmetro… To meio confuso, pois se quando instancio um arraylist de filmes ja é pra vir dentro o array de personagem…Então tentei acessar assim: OBS. O método abaixo esta incompleto porque vi que a pesquisa não ta funcionando…
public String listaFilmesDeUmAtor(String ator) {
String list = "";
for (int pos = 0; pos < lista.size();pos++){
if (lista.get(pos).getElenco().getNome().equalsIgnoreCase(ator)) { // elenco é o arrayList de Personagens...
list += lista.get(pos).toString();
}
}
Grato,
Jeferson Neves