[RESOLVIDO]Juntar duas listas

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

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

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…

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

As duas listas sempre possuem o mesmo tamanho…

Cara, estou com uma duvida, como ficaria o meu for?

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

}[/code]

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

[quote=shenn]As duas listas sempre possuem o mesmo tamanho…

Cara, estou com uma duvida, como ficaria o meu for?

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

}[/code]
[/quote]
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.

Minhas listas estão assim:

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

O exemplo que o Bruno.Souza.PW me passou da um erro:

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

Minha classe:

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

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>();

coloca assim…

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

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…

[quote=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…[/quote]
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.

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
}

[code]
public class Lista02 {
private String apelido1;
private String apelido2;
private String apelido3;
private String apelido4;
private String apelido5;
private String apelido6;
private List apelido = new ArrayList();

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

}[/code]

Cara, minha recomendação é que você exclua essas classes Lista01 e Lista02, e trabalhe somente com as listas.[code]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;
}

}[/code] 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ê :slight_smile:

opaa! era isso mesmo! vllw =D