Comparando dois elementos de um vetor generico?

5 respostas
BinhoAraujo
public class Vetor<T> implements br.com.vector.IVetor<T> {

    T[] vetor;
    int qntElementos = 0;

    public Vetor(int tam) {
        vetor = (T[]) new Object[tam];
    }

    public boolean isEmpty() {
        return Tamanho() == 0;
    }
    
    
    @Override
    public void Adicionar(T elemento) {
        if (Tamanho() == vetor.length) {
            System.out.println("Vetor Cheio");
        }
        for (int i = 0; i < vetor.length; i++) {
            if (vetor[i] == null) {
                vetor[i] = (T) elemento;

                qntElementos++;
                break;
            }
        }

    }
public void bubbleShot(){
        int aux;
        for(int i =0; i < Tamanho() -1; i++){
            for(int j=1; j < Tamanho() -1; j++){
                if(vetor[j] < vetor[j-1]){
                    
                }
            }
        }
    }

Como comparo os dois elementos aqui: if(vetor[j] < vetor[j-1])

5 Respostas

Roger75

bubble sort em java: http://mathbits.com/MathBits/Java/arrays/Bubble.htm

ViniGodoy

Teria que passar para o vetor um Comparator<T>. Nada mais é do que uma interface com um método que indica como a comparação deve ser feita.

BinhoAraujo

Então Vini, tenho que criar o compareTo retornando -1 0 1 ne isso?
Mas não to conseguindo porque a classe criada "Vetor" não tenho um atributo onde possa ta comparando.

public class Vetor&lt;T extends Comparable&gt;&lt;T&gt;&gt; implements IVetor&lt;T&gt;, Comparable&lt;Vetor&gt;&lt;T&gt;&gt; {

    T[] vetor;
    int qntElementos = 0;
ViniGodoy:
Teria que passar para o vetor um Comparator<T>. Nada mais é do que uma interface com um método que indica como a comparação deve ser feita.
ViniGodoy

Se você tem certeza que T extends Comparable, você vai conseguir fazer algo como:

if (vetor[i].compareTo(vetor[i+1] &lt; 0) { //O primeiro elemento é menor do que o segundo }

Uma solução mais flexível seria passar por parâmetro um Comparator, assim você evita a necessidade da classe T ser Comparable. Dê uma lida: http://www.guj.com.br/java/45985-ordenamento-de-vetores#241201

BinhoAraujo

Pronto, to na estrada, assim que chegar na faculdade do uma lida, obrigado.

ViniGodoy:
Se você tem certeza que T extends Comparable, você vai conseguir fazer algo como:

if (vetor[i].compareTo(vetor[i+1] &lt; 0) { //O primeiro elemento é menor do que o segundo }

Uma solução mais flexível seria passar por parâmetro um Comparator, assim você evita a necessidade da classe T ser Comparable. Dê uma lida: http://www.guj.com.br/java/45985-ordenamento-de-vetores#241201

Criado 12 de maio de 2014
Ultima resposta 16 de mai. de 2014
Respostas 5
Participantes 3