Concatenar Duas Listas numa 3 Lista

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ó

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

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.

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

No fim, se vc quiser, ordene-a!

[code]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));
}[/code]

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…

[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

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.

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;
}

}