[RESOLVIDO]Juntar duas listas

14 respostas
shenn

Galera precisa juntar duas listas em uma terceira!

Aqui estão minhas duas listas! Gostaria de juntar o item 1 de uma lisa junto com o 1 da outra lista! Alguem sabe como?

private List<Lista01> testeLista01() {
    	List<Lista01> lista01 = new ArrayList<Lista01>();
		lista01.add(new Lista01("1", "2", "3", "4", "5", "6"));
    	return lista01;
	}

    private List<Lista02> testeLista02() {
    	List<Lista02> lista02 = new ArrayList<Lista02>();
		lista02.add(new Lista02("1", "2", "3", "4", "5", "6"));
    	return lista02;
	}

vllw! =D

14 Respostas

Rodrigo_Sasaki

O que você quer dizer quando diz que quer juntar o item 1 de uma lista com o item 1 de outra?

shenn

Tipo, transformar essas duas listas em uma terceira, com um os indices tipo assim:

Indice 1 - Lista 1 (na terceira lista indice 1)
Indice 1 - Lista 2 (na terceira lista indice 2)
Indice 2 - Lista 1 (na terceira lista indice 3)
Indice 2 - Lista 2 (na terceira lista indice 4)

sou meio ruim para explicar, mas deu pra entender?

Tentei usar o

lista1.addAll(lista2);

mas nao funcionou…

Rodrigo_Sasaki

As duas listas tem sempre o mesmo tamanho? Se tiverem eis algo que você pode fazer:

pode fazer um laço pelo tamanho de uma das listas, e em cada iteração adiciona um dado de cada lista.

Se elas tiverem tamanhos diferentes, você terá que fazer o laço pelo tamanho da lista maior, mas terá que tomar alguns cuidados, para que não seja lançada uma IndexOutOfBoundsException

shenn

As duas listas sempre possuem o mesmo tamanho..

Cara, estou com uma duvida, como ficaria o meu for?
public class Main {

	
	public static void main(String[] args) {
		List<Lista01> lista01 = testeLista01();
		List<Lista02> lista02 = testeLista02();
		
		
		for (int i = 0; i < lista01.size(); i++) {
		
		}
	
	}
	
	private static List<Lista01> testeLista01() {
    	List<Lista01> lista01 = new ArrayList<Lista01>();
		lista01.add(new Lista01("1", "2", "3", "4", "5", "6"));
    	return lista01;
	}

    private static List<Lista02> testeLista02() {
    	List<Lista02> lista02 = new ArrayList<Lista02>();
		lista02.add(new Lista02("1", "2", "3", "4", "5", "6"));
    	return lista02;
	}
	
}
Bruno.Souza.PW

uma solução… espero ter ajudado…

public static void main(String[] args) {  
		List<Lista01> lista01 = testeLista01();  
		List<Lista02> lista02 = testeLista02();  
		List<String> lista03;
		
		lista03 = new ArrayList<String>();
		for (int i = 0; i < lista01.size(); i++) {  
			lista03.add((String)lista01.get(i).get(i));
			lista03.add((String)lista02.get(i).get(i)); 
		}  

	}

Abraçoss

Rodrigo_Sasaki
shenn:
As duas listas sempre possuem o mesmo tamanho.. Cara, estou com uma duvida, como ficaria o meu for?
public class Main {

	
	public static void main(String[] args) {
		List<Lista01> lista01 = testeLista01();
		List<Lista02> lista02 = testeLista02();
		
		
		for (int i = 0; i < lista01.size(); i++) {
		
		}
	
	}
	
	private static List<Lista01> testeLista01() {
    	List<Lista01> lista01 = new ArrayList<Lista01>();
		lista01.add(new Lista01("1", "2", "3", "4", "5", "6"));
    	return lista01;
	}

    private static List<Lista02> testeLista02() {
    	List<Lista02> lista02 = new ArrayList<Lista02>();
		lista02.add(new Lista02("1", "2", "3", "4", "5", "6"));
    	return lista02;
	}
	
}
Basicamente ficaria assim mesmo, é que não sei como está sua Lista, pois você tem uma lista de Lista01. aí não sei como fica muito bem, mas talvez o exemplo do Bruno.Souza.PW te ajude.
shenn

Minhas listas estão assim:

public class Lista01 {

	private String nome1;
	private String nome2;
	private String nome3;
	private String nome4;
	private String nome5;
	private String nome6;

// gets e sets
}

public class Lista02 {

	private String apelido1;
	private String apelido2;
	private String apelido3;
	private String apelido4;
	private String apelido5;
	private String apelido6;

// gets e sets
}
O exemplo que o Bruno.Souza.PW me passou da um erro:
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	The method get(int) is undefined for the type Lista01
	The method get(int) is undefined for the type Lista02

	at Main.main(Main.java:17)
Minha classe:
public class Main {

	
	public static void main(String[] args) {
		List<Lista01> lista01 = testeLista01();
		List<Lista02> lista02 = testeLista02();
		List<String> lista03 = new ArrayList<String>();
		
		for (int i = 0; i < lista01.size(); i++) {  
			lista03.add((String)lista01.get(i).get(i)); // erro 
			lista03.add((String)lista02.get(i).get(i)); // erro 
		}  

	} 
	
	private static List<Lista01> testeLista01() {
    	List<Lista01> lista01 = new ArrayList<Lista01>();
		lista01.add(new Lista01("1", "2", "3", "4", "5", "6"));
    	return lista01;
	}

    private static List<Lista02> testeLista02() {
    	List<Lista02> lista02 = new ArrayList<Lista02>();
		lista02.add(new Lista02("1", "2", "3", "4", "5", "6"));
    	return lista02;
	}
Rodrigo_Sasaki

e por que você tem uma lista assim? e não uma lista de Strings? assim: List<String> nomes = new ArrayList<String>(); List<String> apelidos = new ArrayList<String>();

Bruno.Souza.PW

coloca assim…

lista03.add((String)lista01.get(0).get(i));
			lista03.add((String)lista02.get(0).get(i));
Bruno.Souza.PW

quando vc colocou assim…

lista01.add(new Lista01("1", "2", "3", "4", "5", "6"));

vc adicionou a lista na posição 0 da List lista01…

Rodrigo_Sasaki

Bruno.Souza.PW:
quando vc colocou assim…

lista01.add(new Lista01("1", "2", "3", "4", "5", "6"));

vc adicionou a lista na posição 0 da List lista01…


Pelo que ele postou, Lista01 não possui uma Lista, e sim 6 atributos String. Portanto o acesso deveria ser por getters das Strings, e não como seria em uma lista, pelo índice.

O que eu acho estranho, pra mim faria mais sentido duas listas, como postei acima.

shenn

Corrigi o que vcs postaram, agora estou tentando terminar! esta aqui ate onde eu fiz

public class Lista01 {
	private String nome1;
	private String nome2;
	private String nome3;
	private String nome4;
	private String nome5;
	private String nome6;
	private List<String> nomes = new ArrayList<String>();

// get e set
}
public class Lista02 {
	private String apelido1;
	private String apelido2;
	private String apelido3;
	private String apelido4;
	private String apelido5;
	private String apelido6;
	private List<String> apelido = new ArrayList<String>();

// get e set
}


public class Main {

	
	public static void main(String[] args) {
		Lista01 l1 = new Lista01();
		Lista02 l2 = new Lista02();
		
		List<String> lista01 = testeLista01(l1);
		List<String> lista02 = testeLista02(l2);
		List<String> lista03 = new ArrayList<String>();
		
		System.out.println(lista01);
		
		for (int i = 0; i < lista01.size(); i++) {  
			lista03.add(lista01.get(i));
			lista03.add(lista02.get(i));
		}  
		
		System.out.println(lista03);
	} 
	
	private static List<String> testeLista01(Lista01 l1) {
    	List<String> lista01 = l1.getNomes();
		l1.setNome1("1");
		l1.setNome2("2");
		l1.setNome3("3");
		l1.setNome4("4");
		l1.setNome5("5");
		l1.setNome6("6");
    	return lista01;
	}

    private static List<String> testeLista02(Lista02 l2) {
    	List<String> lista02 = new ArrayList<String>();
    	l2.setApelido1("1");
    	l2.setApelido2("2");
    	l2.setApelido3("3");
    	l2.setApelido4("4");
    	l2.setApelido5("5");
    	l2.setApelido6("6");
    	return lista02;
	}
	
}
Rodrigo_Sasaki
Cara, minha recomendação é que você exclua essas classes Lista01 e Lista02, e trabalhe somente com as listas.
public class Teste{

	public static void main(String[] args){
		List<String> nomes = montarListaNomes();
		List<String> apelidos = montarListaApelidos();
		List<String> lista = new ArrayList<String>();
		for(int i=0 ; i<nomes.size() ; i++){
			lista.add(nomes.get(i));
			lista.add(apelidos.get(i));
		}
	}

	private static List<String> montarListaNomes(){
		List<String> list = new ArrayList<String>();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		list.add("5");
		list.add("6");
		return list;
	}
	
	private static List<String> montarListaApelidos(){
		List<String> list = new ArrayList<String>();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		list.add("5");
		list.add("6");
		return list;
	}
}
Entendeu? em relação aos métodos montarListaNomes e montarListaApelidos, eu só gerei uma lista igual a sua, não sei como vai ficar a implementação deles depois, mas aí é com você :)
shenn

opaa! era isso mesmo! vllw =D

Criado 13 de junho de 2012
Ultima resposta 13 de jun. de 2012
Respostas 14
Participantes 3