Exclusão de elementos em Vetores

13 respostas
Claire

Boa tarde pessoal,
Estou fazendo um programa utilizando vetores. E estou com dificuldade para desenvolver o algorítmo.
O problema é o seguinte:
Tenho dois vetores: a e b
Preciso comparar os dois e excluir todos os elementos que estiverem nos dois. Ex:

a , possui valores 2,3,4
b , possui valores 3,5,4

Teria que retornar…

a, possui valores 2
b, possui valores 5

Pensei em através de um for gerar um vetor auxiliar e utilizar o removeAll() em ambos os vetores.

Há maneira mais fácil de fazer isso??? Algum metodo para remover dos dois?

Valeu pessoal,
Bjos
Claire

13 Respostas

brlima

Claire
Assim sendo:
Tenta usar essa logica:

java.util.Vector v1 = new java.util.Vector(); 
        java.util.Vector v2 = new java.util.Vector();
        
        v1.addElement("A");v1.addElement("B");v1.addElement("C");
        v2.addElement("C");v2.addElement("D");v2.addElement("E");
        
        int size = v1.size();

        for( int c=0; c<size;c++ ){
           if( v2.contains(v1.get(c)) ){ // Se o elemento do v1 estiver do v2
              if( v2.remove(v1.get(c)) ) // Apaga do v2 o elemento. Se apagar
                  v1.remove(c);              // Remove o elemento encontrado do v1
           }
        }
        
        System.out.print("Vector1:");
        for( int c=0; c<v1.size();c++ ){
            System.out.print((String)v1.get(c)+",");
        }
        System.out.println("");
        System.out.print("Vector2:");
        for( int c=0; c<v2.size();c++ ){
            System.out.print((String)v2.get(c)+",");
        }
Claire

Bruno,
Os dois vetores não possuem o mesmo tamanho.
Poderia dar erro no size, pois ele tá estático no for, enquando que quando eu excluo ele no v1 ele vai mudando…

será que se eu colocasse em vez da variável size , v1.size() daria certo?

Claire

caiofilipini

Porque até isso já foi discutido aqui! :lol: :stuck_out_tongue: :wink:

http://www.guj.com.br/forum/viewtopic.php?t=5037

[]'s

brlima
"Claire":
Bruno, Os dois vetores não possuem o mesmo tamanho.
Nao tem problema, Claire. Voce ta verificando se existem elementos do v1 no v2. logo, se nenhuma elemento do v1 estiver no v2, nenhum do v2 vai estar no v1!. Por isso o tamanho nao tem problema.
"Claire":
Poderia dar erro no size, pois ele tá estático no for, enquando que quando eu excluo ele no v1 ele vai mudando....

será que se eu colocasse em vez da variável size , v1.size() daria certo?

Falha nossa: realmente, vc tem que colocar o v1.size(), pois ao tempo que vai retirando, seu tamanho vai diminuindo.. :roll:

Tenta usar o interator, ja que tao falando tanto, e muda pro ArrayList tb... os métodos sao os mesmos...

-------------------------------------------------------------------

melhorando nosso codigo devido a pressoes...rs :shock:

java.util.ArrayList v1 = new java.util.ArrayList(); 
        java.util.ArrayList v2 = new java.util.ArrayList();
        
        v1.add("A");v1.add("B");v1.add("C");
        v2.add("C");v2.add("D");v2.add("E");
        
        for (java.util.ListIterator i=v1.listIterator(v1.size()); i.hasPrevious(); ) {
            Object obj = i.previous();
            if( v2.contains(obj) ){
                if( v2.remove(obj) );
                    i.remove();
            }
        }        
        
        
        
        System.out.print("Vector1:");
        for( int c=0; c<v1.size();c++ ){
            System.out.print((String)v1.get(c)+",");
        }
        System.out.println("");
        System.out.print("Vector2:");
        for( int c=0; c<v2.size();c++ ){
            System.out.print((String)v2.get(c)+",");
        }

melhorô? :lol:

Claire

Valeu!! ^_^b

Infelizmente não posso mudar os vetores, por arraylist… o projeto não é só meu… Começou com vetor, vai seguir com vetor.
Mesmo assim, valeu a dica. A estrutura lógica é a mesma.

Bjos
Claire

danieldestro

O cv tem serios problemas com Vector.

Ironlynx

Me Too!!! :wink:

mbjunior

Acho que a utilização de um ArrayList ou Vector vai ao sabor de sua necessidade…

Se vc precisar trabalhar com os elementos da estrutura em um sentido ( do início ao fim) o mais indicado é ArrayList, agora se vc precisar de inicializar a estrutura para cada comparaçãoo mais indicado é o Vector.

cv1

“mbjunior”:
Acho que a utilização de um ArrayList ou Vector vai ao sabor de sua necessidade…

Se vc precisar trabalhar com os elementos da estrutura em um sentido ( do início ao fim) o mais indicado é ArrayList, agora se vc precisar de inicializar a estrutura para cada comparaçãoo mais indicado é o Vector.

Péééééééé. Resposta incorreta. O unico uso plausivel pra Vector eh quando vc quiser uma ArrayList sincronizada (e vc quase nunca quer uma. Se quisesse mesmo, vc usaria java.util.Collections.synchronizedList(new ArrayList()) ;))

mbjunior

Bem…
estou “engateando” no mundo java…
Creio que minha dica não está errada e sim a menos indicada.
Ainda não cheguei a estudar a API citada acima…
no mais…
é vivendo e aprendendo…
Agora cv, relaxa man…
vc tá precisando tirar umas férias aqui na Bahia…
rs… :lol: :wink:

Ironlynx

Q diabos eh isso?//engatinhando???

Agora cv, relaxa man…
vc tá precisando tirar umas férias aqui na Bahia…

Liga não…ele tah triste pq a programação ainda não lhe rendeu o suficiente para ele comprar uma ferrari 355! :lol:

ozielneto

Na Verdade, a classe java.util.Vector, bem como a java.util.Hashtable são consideradas Legacy Collections, e estão presas a JDK 1.0 e 1.1…

Em alguns casos elas ainda são uteis, principalmente se for para garantir compatibilidade… E tbm por serem sincronizadas, em alguns casos elas são necessárias.

Via de regra, dentro da J2SE (1.2, 1.3, 1.4 e 1.5), usamos qualquer uma das classes filhas de java.util.Collection.

Este tutorial ( http://java.sun.com/docs/books/tutorial/collections/index.html ) vai ajudá-lo a entender um pouco mais sobre elas e qual usar em cada caso…

[]´s

N

Antes que venham aqui falar, vou colocar:

“cv”:
1: Vector da mau halito. Use ArrayList.
2: for(int i=0;i<collection.size();i++) da caries. Use collection.iterator()

Por que será que o GUJ é viciante? :shock: :shock: :shock:

Criado 9 de janeiro de 2004
Ultima resposta 9 de jan. de 2004
Respostas 13
Participantes 9