Concatenar Duas Listas numa 3 Lista

6 respostas
M

Se algum puder me ajudar
1 tenho de criar duas listas ex:l1 l2; :smiley:
2 Tenho de pegar e fazer as duas serem inseridas numa outra lista ex: l3 :evil:
ex:
l1=1,3,5,6… :lol:
l2=2,4,7… :lol:
L3=1,2,3,4,5,6,7… :twisted:

import javax.swing.*;
public class Quarto_T1 {

public static void main(String[] args) {
   
   
   
   
	ListaSimples l1 = new ListaSimples ();
	ListaSimples l2 =  new ListaSimples();
    ListaSimples l3 = new ListaSimples ();
	int x,y,aux ;
	int resp =0;
	
	
       while(resp != 1 ){
		x=Integer.parseInt(JOptionPane.showInputDialog("Digite lista 1\n"));
		l1.insereInicio(x);
		    			
		y=Integer.parseInt(JOptionPane.showInputDialog("Digite lista 2\n"));
		l2.insereInicio(y);
		resp = JOptionPane.showConfirmDialog(null,"Gostaria de inserir mais Numeros? ");
		    			
	}
//------------------------------------------------//

System.out.println(“Lista 1”);

System.out.println(" “);

l1.mostraLista();

System.out.println(”\n");

//-----------------------------------------------//    	

System.out.println(“Lista 2”);

System.out.println(" “);

l2.mostraLista();

System.out.println(”\n");

//----------------------------------------------//
[b]//até aqui ta ok mas como faço um metodo para concatenar ambas as listas em l3[/b]


    System.out.println("Lista 3");
    System.out.println("\n");

    l1.removeInicio();
    l2.removeInicio();
    l3.mostraLista();

OBS:não precisa ser em ordem Basta concatenar ambas numa só

6 Respostas

ViniGodoy

Percorra uma das listas, e chame a função de insere da outra para cada elemento encontrado.

fiaux

Para você unir as duas Listas é muito simples usando List, basta você adicionar todos os elementos de uma na outra, usando o método addAll. Mas acredito que você esteja aprendendo, então não é assim que você deve fazer.

O que você tem que fazer é percorrer as listas e pegar cada elemento, a cada iteração, e adicionar na terceira.

claudneto

Crie a 3ª lista e percorra a primeira, depois a 2ª inserindo os dados...

No fim, se vc quiser, ordene-a!

for (int i = 0; i < l1.size(); i++) {
   l3.add(l1.get(i));
}

for (int j = 0; j < l2.size(); j++) {
   l3.add(l2.get(j));
}

Não tenho certeza, mas eu acho que funciona!

Dica.: System.out.println(" "); = System.outprintln(); -> Não precisa colocar um " "...eu acho que melhora no rendimento do programa...claro que com 1 ou 2 não vai mudar em nada...mas em um programa complexo, pode melhorar...

M

[b]Galera a soluçao é boa e deveria funcionar mas da um erro

for (int i = 0; i < l1.length(); i++) {

l3.insereInicio (l1.add(i));

}

for (int j = 0; j < l2.length(); j++) {

l3.insereInicio (l1.add(j));

}

l3.mostraLista();

}

}
cannot find symbol method length()

cannot find symbol method add(int)

cannot find symbol method length()

cannot find symbol method add(int)

este erro acima

Ja tentei com size e get

mas continua o erro
ViniGodoy

Você tem que adaptar para o seu programa.

Onde ele diz get, use o seu método para obter um elemento da lista.
O add é o seu método de inserção, no caso insereInicio
E o length é o seu método que retorna o tamanho da lista.

Como não conhecemos a implementação da sua classe de lista, não podemos ser mais diretos do que colocar a de uma similar, que é a do próprio Java.

M

Vini se quem sabe a lista que estou ultilizando é esta

/**

  • @(#)ListaSimples.java
  • @author
  • @version 1.00 2008/4/10
    */

public class ListaSimples {

public Nodo prim;

public ListaSimples() {
	this.prim = null;
}

public void insereInicio(int elemento){
	Nodo novoNodo = new Nodo(elemento);
	novoNodo.next = prim;
	prim = novoNodo;
}

public Nodo removeInicio(){
	Nodo nodoRetorno = prim;
	prim = nodoRetorno.next;
	return nodoRetorno;
}

public void mostraLista(){
	System.out.println("Inicio--->Fim");
	Nodo nodoAux = prim;
	while(nodoAux!=null){
		nodoAux.mostraNodo();
		nodoAux = nodoAux.next;
	}
}

public void insereFim(int elemento){
	if(prim!=null){
		Nodo nodoUltimo = prim;
		while(nodoUltimo.next!=null){
			nodoUltimo=nodoUltimo.next;
		}
		Nodo novoNodo=new Nodo(elemento);
		nodoUltimo.next=novoNodo;}
	else
		insereInicio(elemento);
}

public Nodo removeFim(){
	Nodo nodoUltimo = prim;
	Nodo nodoAnterior = prim;
	while(nodoUltimo.next!=null){
		nodoAnterior=nodoUltimo;
		nodoUltimo=nodoUltimo.next;
	}
	nodoAnterior.next=null;
	if(nodoUltimo==nodoAnterior)
		prim=null;
		
	return nodoUltimo;
}

public boolean isEmpty(){
	if(prim==null)
		return true;
	else
		return false;
}

}

Criado 25 de setembro de 2008
Ultima resposta 25 de set. de 2008
Respostas 6
Participantes 4