Bom pessoal, minha dúvida é a seguinte, tenho um ArrayList onde nele tenho alguns valores que ele recebe de um vetor.
O que eu gostaria de fazer era que ao encontrar o maior elemento desse meu ArrayList eu o ADD em um outro ArrayList e removesse esse valor.
Quanto a questão de pegar o maior valor do meu ArrayList e ADD ele em outro ArrayList ja esta tranquilo.
O problema é que não estou sabendo como remover esse maior valor do meu ArrayList onde os valores estão adicionados.
Meu código estar da seguinte maneira abaixo.
[code]public static void main(String[] args) {
int[] v = {2,45,9,14,77,31,0,1};
ArrayList array = new ArrayList(v.length);
ArrayList recebeMaior = new ArrayList(array.size());
//Laço para adicionar os valores do vetor v[] no ArrayList
for (int i = 0; i < v.length; i++) {
array.add(v[i]);
}
//Recebe o primeiro elemento do ArrayList
int minimo = (Integer) array.get(0);
//Laço par apegar o menor elemento
for (int i = 0; i < array.size(); i++) {
if(minimo > (Integer) array.get(i)){
minimo = (Integer) array.get(i);
}
}
//Laço para ir pegando os maiores valores
for (int i = 0; i < array.size(); i++) {
for (int j = 0; j < array.size(); j++) {
if(minimo < (Integer) array.get(j)){
minimo = (Integer) array.get(j);
}
}
recebeMaior.add(minimo);
//recebeMaior.remove(minimo);
//array.remove(recebeMaior);
}
//Adiciono o menor elemento na última posição
recebeMaior.add(minimo);
for (int i = 0; i < recebeMaior.size(); i++) {
System.out.println(i+1 + "º maior: " + recebeMaior.get(i));
}
}[/code]
Alguém poderia me dar uma dica, de como que faço para remover esse meu maior elemento após ter ADD ele no meu outro ArrayList?
Mas, queria algo mais braçal, criei uma variável pra ir contando quantas vezes ela entra no IF pra mim depois remover o elemento daquela posição, mas não ta dando certo. =/
Mas, queria algo mais braçal, criei uma variável pra ir contando quantas vezes ela entra no IF pra mim depois remover o elemento daquela posição, mas não ta dando certo. =/[/quote]
Mais “braçal”:
[code]List list = new ArrayList();
list.add(10);
list.add(20);
list.add(5);
list.add(11);
int maior = 0;
for (int i = 0; i < list.size(); i++) {
int value = list.get(i);
if(value > maior) {
maior = value;
}
}
list.remove(new Integer(maior));
List<Integer> novaList = new ArrayList<Integer>();
novaList.add(maior);
for (Integer value : list) {
System.out.println(value);
}
for (Integer value : novaList) {
System.out.println("#### Nova Lista ###");
System.out.println(value);
}[/code]
Acho que não expliquei muito bem. Além disso, eu gostaria de mostrar todos os valores, mas, em ordem crescente e não apenas o maior deles.
Entendeu?[/quote]
Ali tu está mostrando todos os valores das duas listas. A que contém apenas os maiores valores e aquela que você removeu o seu maior valor.
Está lhe faltando um pouco de empenho, mas basta antes de fazer o for com o System.out.println fazer isso:
Collections.sort(novaList);
Se quiser algo braçal para realizar essa operação, dentro do for e etc, basta queimar um pouco de fosfato que tu chega ao resultado facilmente.
Dá para se basear no exemplo que lhe dei para pegar o maior valor de uma lista.