Pegar o maior valor e remove-lo

Olá a todos do GUJ.

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?

Desde de já obrigado pela ajuda de todos.

Veja:

[code]List list = new ArrayList();
list.add(10);
list.add(20);
list.add(5);
list.add(11);

	Integer value = Collections.max(list);
	System.out.println(value);
	
	list.remove(value);
	for (Integer i : list) {
		System.out.println(i);
	}[/code]

Resolvendo em uma linha (edit: não pode ser em uma linha porque tu quer o valor para adicionar em outro, portanto…):

list.remove(Collections.max(list));

Solução:

[code]Integer value = Collections.max(list);
list.remove(value);

novaList.add(value);[/code]

Classe Collections é bem útil.

Abraços.

Collections é uma boa.

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=jeovane.reges]Collections é uma boa.

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]

Seria por ai nel.

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=jeovane.reges]Seria por ai nel.

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.

Valeu, farei isso :slight_smile:
Obrigado pela ajuda.