Concatenação de duas listas

3 respostas
W

Olá, gostaria de ajuda para saber se a resposta da questão aseguir está correta. segue o enunciado

Implemente uma função concatena(ListaEncadeada lista1, ListaEncadeada lista2), que deve
juntar duas listas encadeadas em uma só, conforme representado na figura.
[img]http://www.guj.com.br/upload/2011/8/17/08ed12f8861d73d011a781073a89cb5f_132842.jpg__thumb[/img]

import java.util.ArrayList;
public class Concatenacao_Lista1_Lista2 {

	public static void main(String args[]) {
		ArrayList lista1 = new ArrayList<String>();
		ArrayList lista2 = new ArrayList<String>();

		lista1.add("10");
		lista1.add("12");
		lista1.add("6");
		System.out.println("Lista 1: " + (lista1));
		
		lista2.add("2");
		lista2.add("7");
		System.out.println("Lista 2: " + (lista2));
		
		ArrayList concatenaLista = new ArrayList(lista1.size()+ lista2.size());

		concatenaLista.addAll(lista1);
		concatenaLista.addAll(lista2);
		System.out.println("Concatenação da Lista 1 com Lista 2: " + (concatenaLista));
	}
}

Essa resposta está correta? caso contrario o que é preciso mudar?

3 Respostas

malokas

Ele pede listas encadeadas, então não poderia usar ArrayList, e sim LinkedList.

Nicolas_Fernandes

Eu vejo duas soluções simples para isso:

1. Concatenar as duas listas, independente se elementos são iguais ou não:
public List<String> concatenarListas(List<String> primeiraLista, List<String> segundaLista) {

    List<String> novaLista = new ArrayList<String>(primeiraLista);
    novaLista.addAll(segundaLista);

    return novaLista;
}
2. Concatenar as duas listas eliminando elementos repetidos:
public List<String> concatenarListas(List<String> primeiraLista, List<String> segundaLista) {

    List<String> listaMaior, listaMenor;

    if (primeiraLista.size() > segundaLista.size()) {
        
        listaMaior = primeiraLista;
        listaMenor = segundaLista;
    }
    else {

        listaMaior = segundaLista;
        listaMenor = primeiraLista;
    }

    for (String elementoLista : listaMenor) {
        if (!listaMaior.contains(elementoLista)) {
            listaMaior.add(elementoLista);
        }
    }

    return listaMaior;
}

Alguma delas ajuda?

W
Nicolas Fernandes:
Eu vejo duas soluções simples para isso: 1. Concatenar as duas listas, independente se elementos são iguais ou não:
public List<String> concatenarListas(List<String> primeiraLista, List<String> segundaLista) {

    List<String> novaLista = new ArrayList<String>(primeiraLista);
    novaLista.addAll(segundaLista);

    return novaLista;
}

Tô precisando de ajuda de como implementar esse codigo em minha lista, pois sou iniciante e ainda não tenho muito conhecimento sobre o assunto, desde já agradeço.

Criado 17 de agosto de 2011
Ultima resposta 18 de ago. de 2011
Respostas 3
Participantes 3