Boa Tarde, estou com o seguinte problema:possuo uma classe “Aluno” que contem os atributos —>Nome e Peso…e possuo outra Classe que chama-se “Controle de Peso”, a classe controle de peso possui um arraylist que adiciona elementos da classe aluno…gostaria de criar um método que retornasse o maior valor do atributo peso…
você podem me ajudar?
desde ja obrigado.
Faça uma variavel int maior e itere sua lista pegando os pesos dos alunos e se o peso for maior que a variavel vc altera, no final vc vai ter o maior peso entre os alunos, algo do tipo
metodo(){
int maior = 0;
para cada aluno no ArrayList{
se aluno.getPeso() > maior;
maior = aluno.getPeso();
}
return maior;
}
1 curtida
Collections.Max(collection c)
Esse retorna o maior elemento. Lembrar de ter um metódo equals implementado na Classe do objeto que estiver dentro da colection.
Outra forma mais complexa e talvez não melhor, usando comparators. A vantagem talvez seria de desacoplar os comparadores…
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Pesquisador {
private static final Comparator<Aluno> MENOR_PESO = new Comparator<Aluno>() {
public int compare(Aluno a1, Aluno a2) { return a1.peso - a2.peso; } };
private static final Comparator<Aluno> MAIOR_PESO = new Comparator<Aluno>() {
public int compare(Aluno a1, Aluno a2) { return a2.peso - a1.peso; } };
private static final Comparator<Aluno> MENOR_IDADE = new Comparator<Aluno>() {
public int compare(Aluno a1, Aluno a2) { return a1.idade - a2.idade; } };
private List<Aluno> alunos = new ArrayList<Aluno>();
public Aluno busca(Comparator<Aluno> comparador) {
if (alunos.isEmpty()) {
return null;
}
Collections.sort(alunos, comparador);
return alunos.get(0);
}
public static void main(String args[]) {
Pesquisador p = new Pesquisador();
p.alunos.add(new Aluno(39,20));
p.alunos.add(new Aluno(40,19));
p.alunos.add(new Aluno(60,26));
p.alunos.add(new Aluno(70,45));
p.alunos.add(new Aluno(55,61));
p.alunos.add(new Aluno(61,13));
System.out.println("Maior peso: [" + p.busca(MAIOR_PESO) + "].");
System.out.println("Menor peso: [" + p.busca(MENOR_PESO) + "].");
System.out.println("Menor idade: [" + p.busca(MENOR_IDADE) + "].");
}
}
class Aluno {
public int peso; // mudar para private com get/set
public int idade; // mudar para private com get/set
public Aluno(int peso, int idade) {
this.peso = peso;
this.idade = idade;
}
public String toString() {
return "Aluno peso: " + peso + "; idade: " + idade;
}
}
Antes de mais nada, desculpe a demora pra responder, estava com uns problemas…
então, de acordo com a resposta do guisantogui, pleo que eu vejo, seria utilizado um loop for each correto???
eu testei e não funcionou(acho que fiz algo errado).
Eu usei a mesma logica passada por ele, porem usei um loop FOR…
o método ficou da seguinte maneira:
public int retornarMaiorPeso()
{
int maior = 0;
for(int i = 0;i< relacao_alunos.size(); i++)
{
Aluno aluno = (Aluno) relacao_alunos.get(i);
if(aluno.getPeso() > maior)
{
maior = aluno.getPeso();
}
}
return maior;
}
as outras formas postadas aqui, ainda não tive tempo de testar…
Agradeço a todos pelo auxilio, Obrigado!